generics类中的嵌套generics
我想在我的api中提供类似的东西:
class Foobar extends AbstractThing class EventThing { public Foobar getSource(); public Double getValue(); }
所以我写这个:
class EventThing<T extends AbstractThing> { public T getSource(); public U getValue(); }
但java无法解析U
使用EventThing<T extends AbstractThing,U>
代替它工作,但第二个U
实际上是冗余的’因为AbtractThing已经定义了Type。 所以我喜欢摆脱它。
你无法摆脱它。 第二个U
不是多余的。 您希望编译器将第一个U
解释为类型参数,但事实并非如此。 你也可以这样写:
class EventThing>
请注意,在这种情况下, Double
是具体类,而不是类型参数。 将此与以下内容进行比较:
class EventThing>
请注意,这与上面第一行代码的格式完全相同。 编译器应该如何知道在第一种情况下, Double
是一个具体的类,而在第二种情况下, U
是一个类型参数?
编译器无法知道这一点,并将U
视为具体类,就像第一行中的Double
一样。 让编译器知道U
是类型参数的唯一方法是将其指定为:
class EventThing, U>