我有一个类成员,它是我类的类型,就像一个链表:
class MyLinkedList {
...
public MyLinkedList next;
...
}
当我扩展这个类时
class MyExtendedLinkedList extends MyLinkedList{
...
public doStuff(){
...
}
}
我不能做类似的事情
MyExtendedLinkedList myExLL = ...//Get some somewhere
myExLL.next.doStuff();
因为 next
不返回 MyExtendedLinkedList
的实例。显然,这可以通过类型转换来完成,但是是否有一种编译时类型安全的方法来声明 next
以便我可以获得所有派生类的派生类型?
最佳答案
class MyLinkedList<T extends MyLinkedList<T>> {
public T next;
}
class MyExtendedLinkedList extends MyLinkedList<MyExtendedLinkedList> {
...
}
但是请注意,您不能扩展 MyExtendedLinkedList
并让这个技巧起作用;这仅在您直接从 MyLinkedList
扩展并执行上述自引用泛型时才有效。
关于java - 如何获取对当前类实例的编译时引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43811484/