查看以下代码:
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;
}
}
除其他属性外,我还需要在某些
ClassAattr
方法上访问ClassAHandler
。有没有办法在处理程序构造函数中不传递origin类的方法。我不太喜欢这种解决方案的外观。 最佳答案
从构造函数内部将this
传递给另一个方法/对象可能非常危险。从构造函数内部看时,对象通常满足的许多保证不一定是正确的。
例如,如果您的类(class)有一个final
(非static
)字段,则通常可以依赖于将其设置为一个值并且永不更改。
当您查看的对象当前正在执行其构造函数时,该保证不再成立。
作为替代方案,您可以将ClassAHandler
对象的构造延迟到第一次需要它之前(例如,通过在该属性的getter中进行延迟初始化)。