Witam forumowiczow.
Bez zbednego gadania od razu wkleje kod i potem opisze w czym rzecz.
public class Test {
public int a = 5;
public Test() {
new Test1(this) {
public void init() {
test.a = 4;
a = 3;
}
};
}
public static void main(String[] args) {
new Test();
}
}
class Test1 {
public Test test;
public Test1(Test test) {
this.test = test;
init();
}
public void init() {
}
}
W moim mniemaniu kod powinien sie wykonac bez problemu. Jednak tam gdzie jest
a = 3;
dostaje...
java.lang.NullPointerException
Test$1.init(Test.java:16)
Test1.<init>(Test.java:32)
Test$1.<init>(Test.java:12)
Test.<init>(Test.java:12)
Test.main(Test.java:23)
Exception in thread "main"
... czyli Test.this jest nullem (Test.this.a rzuca NPE). Czy to stwierdzony bug w Javie? Ktos sie spotkal z czyms takim? Co ciekawe, jak przypisuje do pola "test" tego samego thisa to wszystko jest ok.