我可以在Java中创建一个有效的final变量:
MyOtherClass myEffectivelyFinalObject = //...
return new MyClass() {
@Override
public void myMethod() {
myEffectivelyFinalObject.doSomething();
}
}
我的问题是,当我执行以下操作时,我是否会获得相同的“发生在之前”的关系:
MyOtherClass myEffectivelyFinalObject = //...
return new MyClass() {
private final MyOtherClass innerReference = myEffectivelyFinalObject;
@Override
public void myMethod() {
innerReference.doSomething();
}
}
我保证myEffectivelyFinalObject
是线程可见吗?