我有一个类成员,它是我的类的类型,如链表:
class MyLinkedList {
...
public MyLinkedList next;
...
}
当我扩展这个课程时
class MyExtendedLinkedList extends MyLinkedList{
...
public doStuff(){
...
}
}
我不能做像
这样的事情MyExtendedLinkedList myExLL = ...//Get some somewhere
myExLL.next.doStuff();
由于next
未返回MyExtendedLinkedList
的实例。显然,这可以通过类型转换来完成,但是有一种编译时类型安全的方式来声明next
,以便我可以获得所有派生类的派生类型吗?
答案 0 :(得分:3)
class MyLinkedList<T extends MyLinkedList<T>> {
public T next;
}
class MyExtendedLinkedList extends MyLinkedList<MyExtendedLinkedList> {
...
}
但请注意,您无法扩展MyExtendedLinkedList
并且可以使用此技巧;这只适用于直接从MyLinkedList
扩展并执行上述自引用泛型的方法。