Heim >Java >javaLernprogramm >Warum sind statische Felder in inneren Java-Klassen verboten?
Statische Felder in inneren Klassen verboten: Begründung
Java verbietet die Deklaration statischer Felder und Methoden innerhalb innerer Klassen (oder gewöhnlicher innerer Klassen) aufgrund ihrer inhärenten instanzabhängigen Natur.
Innere Klassen sind im Gegensatz zu statischen verschachtelten Klassen an Instanzen von ihnen gebunden umschließende Klasse. Dies bedeutet, dass jede Instanz einer inneren Klasse eine eindeutige Zuordnung zu einer bestimmten Instanz der umschließenden Klasse hat. Das Zulassen statischer Felder innerhalb innerer Klassen würde daher zu Unklarheiten hinsichtlich der Instanz führen, zu der das statische Feld gehört.
Betrachten Sie das folgende Beispiel:
class OuterClass { class InnerClass { static int i = 100; // compile error } }
Wenn statische Felder zugelassen wären Bei inneren Klassen gäbe es keine eindeutige Möglichkeit, zu bestimmen, zu welcher Instanz von OuterClass das statische Feld i gehört. Diese Mehrdeutigkeit könnte zu Laufzeitfehlern und inkonsistentem Verhalten führen.
Darüber hinaus würde das Zulassen statischer Felder innerhalb innerer Klassen dem Prinzip der instanzbasierten Abhängigkeit widersprechen. Da innere Klassen auf Instanzen der umschließenden Klasse basieren, macht es keinen Sinn, dass sie über statische Funktionen verfügen, die so konzipiert sind, dass sie unabhängig von Instanzen funktionieren.
Zusammenfassend lässt sich sagen, dass Java statische Felder und Methoden in verbietet Zu pflegende innere Klassen:
Das obige ist der detaillierte Inhalt vonWarum sind statische Felder in inneren Java-Klassen verboten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!