作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设您有以下在 Java 中完全合法的类。
class Ping {
Pong value;
Ping(Pong value) { this.value = value; }
}
class Pong {
Ping value;
Pong(Ping value) { this.value = value; }
}
有没有办法创建 Pong 或 Ping 的实例而不给它们的构造函数 NULL
值?
最佳答案
你可以使用这样的东西
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 。因此,更好的实现是在创建 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);
关于java - 如何在 Java 中实例化具有相互循环引用的类,而不必使用 `NULL`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61330718/
我是一名优秀的程序员,十分优秀!