最後の変数がインスタンスを指しています。私は、オブジェクトの参照をnullに変更した場合に何が起こるかを見たいと思っていました。私は非常に驚くべきことに例外もなく、 "ヌル"が印刷されていません。これは、コードa = null;
の行が無視されているかのようです。最後の変数がインスタンスを指しています。インスタンスがnullになることはできますか?
出力:
myFoo.name?笑
public class TryJava {
class InnerFoo {
public InnerFoo(String name) {
super();
this.myName = name;
}
String myName;
boolean isStarted;
}
InnerFoo a = new InnerFoo("haha");
final InnerFoo myFoo = a;
void bar() {
a = null; // IGNORED???
System.out.println("myFoo.name? " + (myFoo != null ? myFoo.myName : " is null "));
}
public static void main(String[] args) {
TryJava tj = new TryJava();
tj.bar();
}
}
あなたはmyFooが参照しているものを変更せず、あなたが参照しているものだけを変更しました。それ以降は参照しないので、効果はありません –
これはfinalとは関係ありません。 Object(); Object b = a; a = null; System.out.println(b == null); '。 –