获取泛型类型的泛型类型

4

如果我拥有

public abstract class SomeType<T extends SomeOtherType> {}

public class WrapperType<U extends SomeType<T>> {}

有没有一种方法可以修改后面的签名(它是一个错误的“无法解析符号"T"”),以便我可以在WrapperType中使用泛型类型,比如List<T>或类似的东西?
(如果我使用了错误的术语来提出这个问题,我会感激纠正。)
1个回答

5
一旦你意识到发生了什么,这就很简单了。你没有在WrapperType类的范围内定义T。至少声明它与SomeType中的边界相同即可。
class WrapperType<T extends SomeOtherType, U extends SomeType<T>> {}

是的,我在你之后就想到了这个。我已经删除了我的答案,在它允许我的时候会批准你的。编辑:不过有趣的是,顺序似乎并不重要。 - Logan
@Logan 如果额外的类型参数会让你感到烦恼,你也可以使用 WrapperType<U extends SomeType <?>>,但前提是你不需要在类的主体中使用 T - Paul Boddington
@Logan 顺序无关紧要是至关重要的。否则,您将无法执行 MyClass<T extends SomeType<U>, U extends SomeOtherType<T>> - Paul Boddington
如果您不需要内部类型,只需使用<U extends SomeType>即可。但是我需要它,因此提出了这个问题 :) - Logan
1
@Logan 你可以这样做,但是原始类型是有害的。 - Paul Boddington

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接