gpt4 book ai didi

java - 两个对象通过最终引用相互引用

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:40:09 26 4
gpt4 key购买 nike

我有一个看起来像这样的类:

public class Node {
private final Node otherNode;
public Node(Node otherNode) {
this.otherNode = otherNode;
}
}

并想做类似的事情

Node n1, n2 ;
n1 = new Node(n2);
n2 = new Node(n1);

但显然不能,因为 n2 尚未初始化。我不想使用 setter 来设置 otherNode 因为它是最终的,因此应该只设置一次。实现此目的最干净的方法是什么?是否有一些我不熟悉的奇特的 Java 语法可以让我这样做?除了构造函数之外,我应该使用初始化方法(丑陋),还是只是放弃并使用 setter(也丑陋)?

最佳答案

有第二个构造函数,它不带参数并构造自己的 Node,将自己作为另一个的“其他”传递。

public class Node
{
private final Node otherNode;

public Node(Node other)
{
otherNode = other;
}

public Node()
{
otherNode = new Node(this);
}

public Node getOther()
{
return otherNode;
}
}

然后在使用的时候:

Node n1 = new Node();
Node n2 = n1.getOther();

确保它们相互引用:

System.out.println(n1 == n1.getOther().getOther());
System.out.println(n2 == n2.getOther().getOther());
System.out.println(n1 == n2.getOther());
System.out.println(n2 == n1.getOther());

这些都打印true

关于java - 两个对象通过最终引用相互引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16725721/

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