首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实例化具有循环引用的类,而不必在Java中使用“How”?

问如何实例化具有循环引用的类,而不必在Java中使用“How”?
EN

Stack Overflow用户
提问于 2020-04-20 19:41:46
回答 1查看 29关注 0票数 0

假设您有以下类,它们在Java中是完全合法的。

代码语言:javascript
复制
class Ping {
    Pong value;

    Ping(Pong value) { this.value = value; }
}

class Pong {
   Ping value;

   Pong(Ping value) { this.value = value; }
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-20 19:45:39

你可以用这样的东西

代码语言:javascript
复制
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}
}

可悲的是,这似乎是一种糟糕的实践,正如这里所描述的:Java leaking this in constructor。因此,更好的实施方式是在乒乓成立后分配乒乓球。

代码语言:javascript
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61330718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档