5 Stimmen

java verschachtelte schnittstellen und innere klassen

Warum kann eine verschachtelte Java-Schnittstelle nicht statisch sein? Und warum kann eine innere Klasse keine statischen nicht-finalen Mitglieder enthalten?

Ich bin bei der Durchsicht von Gosling auf die Fragen gestoßen und habe die Antwort noch nicht herausfinden können.

8voto

Paŭlo Ebermann Punkte 70779

Wenn eine verschachtelte Klasse nicht statisch ist (d. h. eine innere Klasse), bedeutet dies, dass jede Instanz der Klasse an eine Instanz der äußeren Klasse gebunden ist. Da eine Schnittstelle keine eigenen Instanzen hat, scheint es für die implementierenden Klassen nicht sinnvoll zu sein, an ein äußeres Objekt gebunden zu sein, so dass es sinnvoll erscheint, sie standardmäßig statisch zu machen.

2voto

Will Whitaker Punkte 21

Ich bin mir nicht sicher, warum man keine statischen, nicht endgültigen Mitglieder in einer inneren Klasse haben kann, aber da statische Mitglieder nicht an eine bestimmte Objektinstanz gebunden sind, macht es keinen Unterschied, ob sie in der inneren oder äußeren Klasse sind.

z.B.

class OuterClass {

  private static int staticMember;

  class InnerClass {

    void incStatic() {
      staticMember++;
    }

  }

}

Sie können von der inneren Klasse aus auf das statische Mitglied zugreifen, als ob es innerhalb der inneren Klasse wäre.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X