你不能摆脱它。第二个
U不是多余的。您希望编译器将第
U一个解释为类型参数,但事实并非如此。您也可以这样写:
class EventThing<T extends AbstractThing<Double>>
请注意,
Double在这种情况下,它是一个具体的类,而不是类型参数。将此与以下内容进行比较:
class EventThing<T extends AbstractThing<U>>
请注意,它的形式与上面的第一行代码完全相同。在第一种情况下,编译器应该如何知道它
Double是一个具体的类,而在第二种情况下,编译器又是如何
U作为类型参数呢?
编译器不知道这一点,因此将其
U视为具体类,就像
Double第一行中的一样。让编译器知道它
U是类型参数的唯一方法是这样指定它:
class EventThing<T extends AbstractThing<U>, U>



