【发布时间】:2023-03-14 13:50:02
【问题描述】:
请注意:虽然这个问题专门针对Hystrix,但它更多地是关于Java泛型,可以这样回答。
我正在尝试使用 BaseCommand 子类化 HystrixCommand,然后我的应用程序的其余部分可以将其子类化。这个BaseCommand 将包含其他命令子类可以免费继承的各种好东西。
到目前为止我最好的尝试:
public class BaseCommand<T> extends HystrixCommand<T> {
// Stuff
}
public class FunnyCommand<Widget> extends BaseCommand<Widget> {
// Stuff
}
但这会产生以下编译器错误:
com.netflix.hystrix.HystrixCircuitBreaker$UnitTest$BaseCommand类引用com.netflix.hystrix.HystrixCircuitBreaker$UnitTest$BaseCommand类,使用1个参数,但引用的类不带参数
它还会产生以下编译器警告:
类型参数String隐藏了String类型
我该如何重写这个:
-
BaseCommand和HystrixCommand是 any 类型的通用(T、?等);和 -
BaseCommand子类对于 any 具体类型(String、Long、Widget 等)是通用的;和 - 不存在编译器错误或警告
这里是 Java 7。
【问题讨论】:
-
请显示您的实际代码或实际错误。第二个错误不适用于您显示的代码。
-
这个
FunnyCommand<Widget>声明了一个名为Widget的类型参数,独立于您在其他任何地方声明的任何Widget类型。
标签: java generics inheritance subclass