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

Bru*_*llo 15 java constructor this

查看以下代码:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要访问ClassAattr一些ClassAHandler方法,以及其他属性.有没有办法在没有在处理程序构造函数中传递原始类的情况下这样做.我真的不喜欢这个解决方案"看起来".

Joa*_*uer 11

this从构造函数内部传递给另一个方法/对象可能相当危险.当从构造函数内部查看对象时,许多保证对象通常不会成立.

例如,如果您的类具有final(非static)字段,那么您通常可以依赖它将其设置为值并且永远不会更改.

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

作为替代方案,您可以延迟ClassAHandler对象的构造,直到它首次需要为止(例如,通过在该属性的getter中进行延迟初始化).