gpt4 book ai didi

java - 在 java 构造函数中传递 "this"

转载 作者:太空狗 更新时间:2023-10-29 22:53:51 25 4
gpt4 key购买 nike

查看以下代码:

public class ClassA {
private boolean ClassAattr = false;

public ClassA() {
ClassAHandler handler = new ClassAHandler(this);
}
}

public class ClassAHandler extends GeneralHandler {
ClassA ca = null;

public ClassAHandler(ClassA classa) {
this.ca = classa;
}
}

我需要在某些 ClassAHandler 方法和其他属性上访问 ClassAattr。有没有一种方法可以在不在处理程序构造函数中传递原始类的情况下这样做。我不太喜欢这个解决方案的“外观”。

最佳答案

从构造函数内部将 this 传递给另一个方法/对象可能相当危险。当从构造函数内部查看时,对象通常实现的许多保证不一定为真。

例如,如果您的类有一个final(非static)字段,那么您通常可以依赖它被设置为一个值并且永远不会改变。

当您查看的对象当前正在执行其构造函数时,该保证将不再成立。

作为替代方案,您可以延迟构建 ClassAHandler 对象,直到第一次需要它(例如,通过在该属性的 getter 中执行惰性初始化)。

关于java - 在 java 构造函数中传递 "this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2419410/

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