Я не понимаю этого предупреждения this-escape. Почему мне проблематично добавить это в список, принадлежащий внешнему классу, в конструкторе (не-final) внутренний класс B?
В этом простом примере предупреждение исчезнет, если я сделаю класс B финальным, но я не думаю, что хочу это будет окончательно.
/*
javac -Xlint:all wtf.java
Produces this warning:
wtf.java:9: warning: [this-escape] possible 'this' escape before subclass is fully initialized
A.this.all_my_Bs.add(this);
^
*/
public class wtf {
public static class A {
public class B {
public B() {
A.this.all_my_Bs.add(this);
}
}
public java.util.ArrayList all_my_Bs = new java.util.ArrayList();
}
};
Подробнее здесь: https://stackoverflow.com/questions/790 ... -to-a-list