泛型和关键字final

gst*_*low 0 java generics final

Whu这是一个无效的建筑

class A <T extends  String & Comparable<T>>{}
Run Code Online (Sandbox Code Playgroud)

出:

java: java.lang.Comparable cannot be inherited with different arguments: <T> and <java.lang.String>
Run Code Online (Sandbox Code Playgroud)

但它是有效的

class A <T extends  Number & Comparable<T>>{}
Run Code Online (Sandbox Code Playgroud)

我注意到它与String相关是最终的但是数字 - 不是.

但是T String在我认为的第一种情况下是有效的.为什么不?

Roh*_*ain 6

不同的是,String类已经实现Comparable<String>,而Number类没有.因此,与束缚,T将实现双方Comparable<String>Comparable<T>,这是不允许的.

类不能从泛型类型扩展或实现不同的参数化实例化.