问题 Java Generics - 实现和扩展


我想写点类似的东西

public class A implements B<T implements C> {}

public abstract class M<I extends P> extends R<I extends P> implements Q<I extends P> {}

但我得到的错误就像多个标记和令牌上的语法错误一样延伸,预期。请告诉我这样做的正确方法。


7889
2017-10-21 07:32


起源



答案:


当你在泛型中有接口时,你仍然必须使用 extends 关键词。

在你的情况下,如果你知道什么 T 将会 :

public class A<T extends C> implements B<T> {}

如果你不这样做,你只需要实现 B 用一个 C 类型:

public class A implements B<C> {}

对于第二部分,一旦你定义了 I 您可以在其他泛型类型中使用它:

public abstract class M<I extends P> extends R<I> implements Q<I> {}

资源:


13
2017-10-21 07:37





没有 implements 通用边界中的关键字。这只是 extends

此外 - 您应该仅在类定义中指定type参数,而不是在超类型中指定。即

public class A<T extends C> implements B<T> {}

3
2017-10-21 07:35