java子类化和泛型
请注意:虽然这个问题专门涉及Hystrix,但它实际上更多地是关于Java泛型的,可以这样回答
我试图用一个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
子类是任何具体类型(String、Long、Widget等)的泛型;及- 不存在编译器错误或警告
这里是Java7
# 1 楼答案
Widget
只是一个类型,所以不需要将其声明为类型变量。不幸的是,声明和使用看起来很相似在下面的代码中,标识符
T
用于两个不同的角色