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

标签 java generics

我有一个类成员,它是我类的类型,就像一个链表:

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/

相关文章:

java - 打开 PDF 时,展开类 android.webkit.WebView 时发生错误 Lollipop 崩溃

Java 泛型 T 与对象

Java - 泛型问题

Java方法重载 - 同一继承树中的通用参数和参数

swift - 如何在使用 Swift 3 中的 Measurements 的函数调用中使用泛型

java - 创建一个 Java 程序来搜索文件中的特定单词

java - WatchService 在 CentOS 上使用 100% 的 CPU

java - 如何确定flink中的任务槽数

java - 删除后按后退按钮更新购物车计数

c# - 你能用隐式转换满足通用约束吗?