我在阅读泛型时遇到了PECS(制片extends人和消费者的super简称).
能否给我一个人解释如何使用佩奇之间解决困惑extends和super?
假设我正在尝试编写一个函数来返回当前类型的实例.有没有办法T引用确切的子类型(所以T应该B在课堂上引用B)?
class A {
<T extends A> foo();
}
class B extends A {
@Override
T foo();
}
Run Code Online (Sandbox Code Playgroud) 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在我认为的第一种情况下是有效的.为什么不?