如何使用循环引用来实例化类,而不必在Java中使用'NULL'?

如何使用循环引用来实例化类,而不必在Java中使用'NULL'?,java,cyclic-reference,Java,Cyclic Reference,假设您有以下在Java中完全合法的类 类Ping{ 庞氏值; Ping(Pong值){this.value=value;} } 乒乓球{ 平值; Pong(Ping值){this.value=value;} } 有没有办法在不给构造函数一个NULL值的情况下创建一个Pong或Ping实例?您可以使用这样的方法 class Ping { Pong value; Ping() {this.value = new Pong(this)} Ping(Pong value) {t

假设您有以下在Java中完全合法的类

类Ping{
庞氏值;
Ping(Pong值){this.value=value;}
}
乒乓球{
平值;
Pong(Ping值){this.value=value;}
}

有没有办法在不给构造函数一个
NULL
值的情况下创建一个Pong或Ping实例?

您可以使用这样的方法

class Ping {
    Pong value;
    Ping() {this.value = new Pong(this)}
    Ping(Pong value) {this.value = value}
}
class Pong {
    Ping value;
    Pong() {this.value = new Ping(this)}
    Pong(Ping value) {this.value = value}
}
可悲的是,这似乎是一种糟糕的做法,如下所述:。因此,更好的实现是在创建Ping之后分配Pong

class Ping {
    Pong value;
    Ping() {}
    Ping(Pong value) {this.value = value}
    public setPong(Pong pong) {
        this.value = pong;
    }
}
class Pong {
    Ping value;
    Pong() {}
    Pong(Ping value) {this.value = value}
    public setPing(Ping ping) {
        this.value = ping;
    }
}
Ping ping = new Ping();
Pong pong = new Pong(ping);
ping.setPong(pong);
看到这个答案了吗