gpt4 book ai didi

Java:某些东西被初始化的次数

转载 作者:行者123 更新时间:2023-11-29 08:40:10 25 4
gpt4 key购买 nike

我看到了下面的代码,想知道每个 Tree 实例是否会引用不同的 EMPTY 对象,或者它是否会为所有树实例引用相同的对象(仅实例化一次)。

class Tree<T> {
public final Tree<T> EMPTY = new EmptyTree<T> ();

/** True iff THIS is the empty tree. */
public boolean isEmpty () { return false; }

private static class EmptyTree<T> extends Tree<T> {
/** The empty tree */
private EmptyTree () { }
public boolean isEmpty () { return true; }
}
...
}

我的直觉是它必须是“public static final....”才能在整个类中为 EMPTY 初始化一个对象。

来自 page 99-100 of Data Structures Into Java

最佳答案

你是对的。此代码每次都使用一个新的 EMPTY 对象。

这当然是有效的,但不是“正常”的事情。当然,我是那些说 static 实际上是好的 OO 设计中的异常的人之一;但是Java语言允许使用static;并且(除非在此处未显示的代码中有充分的理由)......合理的方法是拥有一个共享静态 EMPTY Tree 常量。

但是该代码无论如何看起来都很奇怪 - 例如,isEmpty() 方法总是返回 false 的“意义”是什么?!

我的“直觉”是:我会退后一步,全面审查该代码,以了解该类中是否有“更多”惊喜。

关于Java:某些东西被初始化的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40852807/

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