zugriff auf innerclass / nestedclass
-
warum kann man eine innerclass / nestedclass im statischen kontext nur über eine instanz der outerclass erzeugen ([1]) und nicht direkt ([2])? oO
[3] leuchtet ein denk ichist Innerclass nicht ein teil von Outerclass? warum muss man erst eine instanz von Outerclass erzeugen um ein Innerclass erzeugen zu können? bin gerade etwas verwirrt.
public class Outerclass { class Innerclass { } static void staticfoo() { new Outerclass().new Innerclass(); // [1] geht new Innerclass(); // [2] geht nicht } void memberfoo() { new Innerclass(); // [3] geht } public static void main(String[] args) { staticfoo(); new Outerclass().memberfoo(); } }
-
Damit du
Innerclass
direkt ansprechen kannst musst du es auf static setzten und kannst dannnew Outerclass.InnerClass()
. Das bedeutet nicht, dass diese Klasse nur statische Member haben soll, sondern nur, dass man es ohne Instanz über die Klasse ansprechen kann, ähnlich wie die statischen Methoden.
-
Nichtstatische innere Klassen können auch auf nichtstatische Member der äußeren Klasse zugreifen. Damit das geht, muss jeder Instanz der inneren eine Instanz der äußeren Klasse zugeordnet werden.
-
Danke euch beiden
hab noch was gefunden für den Fall, dass ich nicht der einzige bin der sich wundert oder noch nicht kannte:
http://www.javaworld.com/javaworld/javaqa/1999-08/01-qa-static2.html