Dies ist eine sehr interessante Frage. Ich würde versuchen, es dir zu erklären.
Eine verschachtelte Klasse ist ein Mitglied ihrer einschließenden Klasse. Nicht statische verschachtelte Klassen (innere Klassen) haben Zugriff auf andere Mitglieder der umschließenden Klasse , auch wenn sie als privat deklariert sind. Statisch verschachtelte Klassen haben keinen Zugriff auf andere Member der umschließenden Klasse.
Grundsätzlich ist eine statische geschachtelte Klasse interagiert mit den Instanzelemente seiner obersten Ebene Klasse, genauso wie alle anderen Klassen.
Also im Grunde können und sollten Sie eine statische geschachtelte Klasse als eine Top-Level-Klasse betrachten, die nur in einer anderen Top-Level-Klasse geschachtelt wurde nur für die Verpackung Bequemlichkeit.
Also, wenn Sie eine verschachtelte Klasse verwenden, Start durch statische machen, und dann sehen, wenn Sie irgendwelche Instanz Mitglieder zugreifen müssen dabei die Möglichkeit, die es nicht statisch zu machen.
Nehmen wir das Beispiel von JDK,
public class LinkedList<E> ... {
...
private static class Entry<E> { ... }
}
Hier ist die Entry
eine statische verschachtelte Klasse, wie es für diese Klasse eine Klasse der obersten Ebene sein macht keinen Sinn machen, wie es durch die verwendet wird, LinkedList
Klasse nur. Und da es überhaupt keine Mitglieder der LinkedList
Klasse verwendet, macht machen statische macht noch mehr Sinn.
Diese Antwort sollte helfen: http://stackoverflow.com/a/70613/5221346 – Gendarme