例如,允许子类使用自己的类型很有用
想象一下这样的课程
class Node {
Node next;
}
如果你扩展该类,你就会陷入Node.
class SpecialNode extends Node {
void foo() {
// euwww
SpecialNode nextNode = (SpecialNode) this.next;
}
}
你也不能像它一样定义它
class Node {
T next;
}
因为这将允许T的任何东西.你真的想要一个扩展Node的T,或者你不能再在节点内使用T作为Node而不进行强制转换.但它适用于儿童班.
通过使用递归边界
class Node> {
T next;
}
您将T限制为自己或您自己的子类,然后允许您这样做
class SpecialNode extends Node {
void foo() {
SpecialNode nextNode = this.next; // type-safe!
}
}
这样,父类和子类都可以在其抽象级别上访问完全类型安全的所有内容.