泛型和关键字final



这是一个无效的构造

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>,这是不允许的。

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

最新更新