Обратите внимание, что: хотя этот вопрос касается конкретно Hystrix, его действительно больше о Java-дженериках и на который можно ответить как таковой.Подклассы и дженерики
Я пытаюсь подкласса HystrixCommand
с BaseCommand
, который затем может быть подклассифицирован остальной частью моего приложения. Этот BaseCommand
будет включать в себя всевозможные лакомства, которые другие подклассы команд могут наследовать бесплатно.
Моя лучшая попытка до сих пор:
public class BaseCommand<T> extends HystrixCommand<T> {
// Stuff
}
public class FunnyCommand<Widget> extends BaseCommand<Widget> {
// Stuff
}
Но это дает следующее сообщение об ошибке компилятора:
The class com.netflix.hystrix.HystrixCircuitBreaker$UnitTest$BaseCommand refers to the class com.netflix.hystrix.HystrixCircuitBreaker$UnitTest$BaseCommand and uses 1 parameters, but the referred class takes no parameters
Он также производит следующее предупреждение компилятора:
The type parameter String is hiding the type String
Как я могу перепишите это так:
BaseCommand
иHystrixCommand
являются общими для любого типа (T
,?
и т.д.); иBaseCommand
подклассы являются общими для любые конкретный тип (строка, длинная, виджет и т. д.); и- Никаких ошибок компилятора или предупреждения не существует
На Java-здесь.
Пожалуйста, подтвердите свой код или исправить ошибку. Вторая ошибка не может применяться к коду, который вы указали. –
Этот 'FunnyCommand' объявляет параметр типа 'Widget' независимо от любого типа Widget, который вы указали где-либо еще. –