gpt4 book ai didi

java - 这个特定的内部非静态类是否有显着的开销?

转载 作者:行者123 更新时间:2023-12-03 23:00:40 24 4
gpt4 key购买 nike

我正在为学校作业编写自己的双向链表实现,我在列表类中使用了一个名为 Node 的内部节点类,它表示彼此链接的列表节点(如通常是链表的情况)。

class DoublyLinkedList<T>
{
class Node
{
T obj;
}
}

我想知道,对于具有许多节点的大型列表,由于每个 Node 对象都可能引用父列表类的一个实例,这是一个很大的开销和次优设计吗?作为非静态类当然很方便 - 然后节点可能会更改父列表 firstlast 引用,我发现这非常适合封装。

如果我将 Node 设为静态,它就不能再(没有对列表的显式成员引用)用于操作父列表 firstlast 我必须从另一个角度来处理它 - 列表将通过它自己的方法分配和操作节点,即将它们相互链接,取消链接并自然地调整它的 first最后 值。

为了好的设计和学习,我想知道什么是The Smart Thing To Do (c)(如果有的话)?

最佳答案

如果内部类不是static,那么对父类的隐式引用已经存在,您可以从 Node 内部通过 DoublyLinkedList.this 引用它 类。

无论如何,我不明白为什么 Node 类应该能够直接修改其父类的属性。改变列表的方法(所以 firstlast 也是)应该属于 DoubleLinkedList 类,而不是直接属于 Node类(class)。这正是为了封装,Node 实例不应该知道它包含在何处或如何从外部使用它。

关于java - 这个特定的内部非静态类是否有显着的开销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15311803/

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