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在我认为的第一种情况下是有效的.为什么不?
不同的是,String类已经实现Comparable<String>,而Number类没有.因此,与束缚,T将实现双方Comparable<String>和Comparable<T>,这是不允许的.
类不能从泛型类型扩展或实现不同的参数化实例化.