查看以下代码:

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中进行延迟初始化)。

07-26 08:28