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 ich

    ist 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 dann new 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


Anmelden zum Antworten