Heim >Java >javaLernprogramm >Warum können Sie in Java vor Version 16 keine statische Methode in einer nichtstatischen inneren Klasse definieren?
In Versionen vor Java 16 wurde versucht, eine statische Methode zu definieren innerhalb einer nicht statischen inneren Klasse führt zu einem Compilerfehler. Beispielsweise schlägt das folgende Codefragment fehl:
<code class="java">public class Foo { class Bar { static void method() {} // Compiler error } }</code>
Nicht statische innere Klassen sind an Instanzen ihrer umschließenden Klasse gebunden. Jede Instanz der inneren Klasse hat einen versteckten Verweis auf die umschließende Klasseninstanz. Das bedeutet, dass statische Methoden innerhalb der inneren Klasse einen Verweis auf die umschließende Klasse aufrechterhalten müssten, was gegen das Prinzip der Schnittstellenisolation verstößt.
Um statische Methoden innerhalb einer inneren Klasse zu definieren, müssen Sie muss die innere Klasse als statisch deklarieren. Eine statische innere Klasse hat keinen impliziten Verweis auf die Instanz ihrer umschließenden Klasse. Dadurch können statische Methoden definiert werden:
<code class="java">public class Foo { static class Bar { // now static static void method() {} } }</code>
Das obige ist der detaillierte Inhalt vonWarum können Sie in Java vor Version 16 keine statische Methode in einer nichtstatischen inneren Klasse definieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!