Dieses Beispiel zu kompilieren nicht kompilieren:Zugriff auf einen privaten Bereich innerhalb der Klasse verweigert
public class Test{
private LinkedList<Integer> lst = new LinkedList<>();
public static Test of(int i){
return new Test(){{
this.lst.addFirst(i);
}};
}
}
Aber das tut:
public class Test{
private LinkedList<Integer> lst = new LinkedList<>();
public static Test of(int i){
Test t = new Test();
t.lst.addFirst(i);
return t;
}
}
Warum? In beiden Fällen greifen wir auf ein privates Mitglied des Klassenkörpers zu.