Warum ist eine statische lokale Klasse in einer Methode nicht zulässig? [geschlossen

Ich habe mein Java abgewischt und habe einige Missverständnisse über lokale Klassen (die ich letztendlich nie benutzt habe). Ich verstehe das Konzept der Statik gut, aber nicht im Fall vonlokale Klassen.

1. Warum ist eine statische Methode in lokalen Klassen nicht zulässig?

2. Warum ist eine statische lokale Klasse in einer Methode nicht zulässig?

Eine statische Methode ist in lokalen Klassen nicht zulässig:

Hier verstehe ich es nicht. Für mich ist die lokale Klasse an die statische Methode main gebunden. Ich verstehe nur nicht, warum das nicht geht. Der Zugriff auf die Methode main erfolgt über die Sequence-Klasse. Da sayGoodbye dann statisch ist, sollte der Zugriff über seine Klasse erfolgen. Aber nein

public class Sequence {

    public static void main(String... args) {

        class EnglishGoodbye {
            public static void sayGoodbye() { // this cannot be done
                System.out.println("Bye bye");
            }
        }
        EnglishGoodbye.sayGoodbye();
    }
}
Eine statische lokale Klasse ist in einer Methode nicht zulässig:

Das ist nicht möglich: Es ist ein bisschen mehrdeutig, aber ich denke, dass eine statische Angabe hier dieselbe Bedeutung hat wie eine nicht statische, da die statische Klasse an eine statische Methode gebunden ist. Ich bin verwirrt

public class Sequence {

    public static void main(String... args) {

        static class EnglishGoodbye { //static local classes not allowed
            public static void sayGoodbye() {
                System.out.println("Bye bye");
            }
        }
        EnglishGoodbye.sayGoodbye();
    }
}

Bearbeiten Die erste Antwort, die ich bekam, war ein Zitat von Orakel:

Local-Klassen sind nicht statisch, da sie Zugriff auf Instanzmitglieder des einschließenden Blocks haben. Folglich können sie die meisten Arten von statischen Deklarationen nicht enthalten.

und meine Antwort:

Das erklärt aber nicht wirklich alles. Wenn Sie eine innere Klasse haben, können Sie nicht auf statische Felder zugreifen, aber Sie können auf statische Felder zugreifen. Gleiches sollte für eine lokale Klasse gelten, und da es keine statische Variable gibt, ist es nutzlos. Aber was ist mit Methoden, wie in meinem Beispiel.

Okay Ich habe ein Schema erstellt, um besser zu erklären, wie ich Dinge sehe. Es könnte jedoch völlig irrtümlich sein und ich schäme mich ein bisschen, es zu zeigen. In diesem Schema und in dem Szenario, in dem eine statische lokale Klassewürd zugänglich sein Ich hätte eine lokale Klasse im oberen Speicherblock. Wann immer die statische Methode2 aufgerufen wird, verweist sie einfach darauf.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage