多级Java通用继承使用扩展于通用参数

前端之家收集整理的这篇文章主要介绍了多级Java通用继承使用扩展于通用参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有
public class First<T> {}

public class Second<T extends SomeConcreteClass> extends First<T> {}

public class Third<T> extends Second<T> {} //Compile-time error

我得到编译时错误

Type argument T is not with bounds of type-variable T.

当我构成第三个时,我想要将通用参数赋给SomeConcreteClass(或其派生类),如果我提供了不属于SomeConcreteClass继承的类型,则抛出运行时错误层次结构.

我会认为第二个声明中的规范将简单地向下传播,即它应该在第三个声明(和任何实例化)中隐含.

有什么错误

解决方法

所有你需要的是
public class Third<T extends SomeConcreteClass> extends Second<T>

你只需要重新定义绑定.它不像你想像的那样传播.

(我不是这个原因的积极因素,但我有一些猜测 – 如果它是第三个< T>扩展第二个< Foo>?T上的适当的界限是不明显的,如果甚至是一个,所以它不会自动传播;你必须指定它.)

猜你在找的Java相关文章