Java 如何获取对当前类实例的编译时引用

Java 如何获取对当前类实例的编译时引用,java,generics,Java,Generics,我有一个属于我的类的类成员,如链表: class MyLinkedList { ... public MyLinkedList next; ... } 当我扩展这门课的时候 class MyExtendedLinkedList extends MyLinkedList{ ... public doStuff(){ ... } } 我不能做这样的事 MyExtendedLinkedList myExLL = ...//Get some s

我有一个属于我的类的类成员,如链表:

class MyLinkedList {
    ...
    public MyLinkedList next;
    ...
}
当我扩展这门课的时候

class MyExtendedLinkedList extends MyLinkedList{
    ...
    public doStuff(){
    ...
    }
}
我不能做这样的事

MyExtendedLinkedList myExLL = ...//Get some somewhere
myExLL.next.doStuff();
因为
next
不会返回
MyExtendedLinkedList
的实例。显然,这可以通过类型转换来实现,但是是否有一种编译时类型安全的方法来声明
next
,以便我可以为所有派生类获取派生类型?

类MyLinkedList{
class MyLinkedList<T extends MyLinkedList<T>> {
  public T next;
}

class MyExtendedLinkedList extends MyLinkedList<MyExtendedLinkedList> {
  ...
}
下一步是公共交通; } 类MyExtendedLinkedList扩展了MyLinkedList{ ... }

但是请注意,您不能扩展
MyExtendedLinkedList
,而让这个技巧发挥作用;仅当您直接从
MyLinkedList
扩展并执行上述自引用泛型时,此选项才有效。

如果确实需要扩展
MyExtendedLinkedList
,我如何调整此选项?您可能会放弃类型安全。说真的,这真的很难实现。@LouisWasserman我不明白会有什么困难。请您澄清一下好吗?除了“试试看”之外,解释起来有些棘手。如果
Foo扩展了Bar
,那么
subfo
或多或少受到Java类型系统的限制,仍然要扩展
Bar
。但是这里有
Foo扩展Bar
,所以
subfo
必须扩展
Bar
,而不能扩展
Bar