gpt4 book ai didi

java - 是否可以扩展一个具有自身实例作为字段的类,以便子类具有子类的实例?

转载 作者:行者123 更新时间:2023-12-01 12:36:30 25 4
gpt4 key购买 nike

我知道您可以将 LinkedList 的实现分为两类。在其中一个中,实际的 LinkedList 是对某些链接节点中第一个的引用,如下所示

public class LinkedList1<E>{

class Node{
E data;
Node next;
}

Node head;

}

该版本可能更好,但是,还有一个更“直接”的版本,这使得删除头部(头部意味着从客户端角度来看的第一个元素)之类的事情有点棘手,但仍然可以在 LinkedList2 的实例中进行:

public class LinkedList2<E>{

E data;
LinkedList2 next;

}

我很好奇是否有任何方法可以创建 LinkedList2Child extends LinkedList2 使得 next 字段的类型为 LinkedList2Child,可能涉及反射?

编辑:这并没有阻止我完成任何事情,因为版本 1 可用 - 我只是对一般问题感到好奇,这是一个例子。

我知道您可以通过声明与父级字段同名的字段来“隐藏”子类中的字段,但如果您想使用对该字段进行操作的父级方法,则这将不起作用。

最佳答案

泛型:

public class LinkedList2<E, T extends LinkedList2>{

E data;
T next;

}

public class LinkedSubclass extends LinkedList2<LinkedSubclass> {

}

它受到对泛型的通常限制(例如,在基类中构造新的“下一个”值需要采用子类型的类或工厂),但会涵盖您想要的内容。

关于java - 是否可以扩展一个具有自身实例作为字段的类,以便子类具有子类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25536211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com