我有一个通用类:
public class Widget<COMMAND> {
// ...
}
所以我可以创建它的实例,例如:
Widget<Fizz> fizzWidget = new Widget<Fizz>();
然后我有一个 ABC BaseWidgetProcessor
,我想接受Widget
任何类型的 s :
public abstract class BaseWidgetProcessor<Widget<COMMAND>> {
public abstract COMMAND process();
}
使用具体的实现:
public abstract class AstroWidgetProcessor<Widget<COMMAND>> {
@Override
public COMMAND process() {
// ...
}
}
等等
问题是,与BaseWidgetProcessor
:
public abstract class BaseWidgetProcessor<Widget<COMMAND>> {
public abstract COMMAND process();
}
我收到语法错误:
标记的语法错误,错误的构造
当我将其更改为:
public abstract class BaseWidgetProcessor<Widget> {
public abstract COMMAND process();
}
错误消失了,但现在我收到编译器警告:
类型参数 Widget 隐藏类型 Widget
这里发生了什么?!?为什么会出现错误,然后是相应的警告?设置它的正确(语法)方法是什么?