这是一个无效的构造
class A <T extends String & Comparable<T>>{}
:
java: java.lang.Comparable cannot be inherited with different arguments: <T> and <java.lang.String>
但它是有效的
class A <T extends Number & Comparable<T>>{}
我注意到它与String is final but Number - not有关。
但是我认为T字符串在第一种情况下是有效的。为什么不呢?
不同的是,String
类已经实现了Comparable<String>
,而Number
类没有。因此,在这个范围内,T
将同时实现Comparable<String>
和Comparable<T>
,这是不允许的。
类不能从泛型类型扩展或实现不同的参数化实例化。