Per JLS:Innere Klasse erlaubt statische Felder und nicht konstante statische Ausdrücke - Warum?
Eine innere Klasse ist eine verschachtelte Klasse, die nicht explizit oder implizit erklärt statisch ist. Innere Klassen können keine statischen Initialisierer oder Mitgliederschnittstellen deklarieren.
Aber mein folgender Code kompiliert erfolgreich.
class A {
interface B {
class C { // Inner class having static variables.
static int d; // Static variable
static {
}
}
}
}
Kann jemand mir dieses Verhalten
Ich bin mir ziemlich sicher, 'C' ist implizit' static', im Gegensatz zu einer inneren Klasse. –
Ihre geschachtelte Klasse ** ist ** implizit als statisch deklariert. Weil Schnittstellen keine inneren Klassen haben können. Das Gleiche gilt für die Schnittstelle B, die implizit statisch ist. –