假设我正在尝试编写一个函数来返回当前类型的实例.有没有办法T引用确切的子类型(所以T应该B在课堂上引用B)?
class A {
<T extends A> foo();
}
class B extends A {
@Override
T foo();
}
Run Code Online (Sandbox Code Playgroud) 有接口
interface Animal extends Comparable<Animal> {
}
Run Code Online (Sandbox Code Playgroud)
和2个班级
class Dog implements Animal {
}
Run Code Online (Sandbox Code Playgroud)
和
class Cat implements Animal {
}
Run Code Online (Sandbox Code Playgroud)
compareTo(Animal o)当争论不是同一个具体实施时应该返回什么Animal?
应该扔IllegalArgumentException吗?
例如,如果我将Dog实例传递给Cat.compareTo().我无法比较它们,因为它们是不同的类型.我不能称super.compareTo()他们的超级是Object没有实现的类型Comparable.铸造Dog到Cat会抛出ClassCastException.