Was ist der Unterschied zwischen diesen beiden innerclass-Deklarationen? Welche Vorteile/Nachteile gibt es?
Fall A: Klasse innerhalb einer Klasse.
public class Levels {
static public class Items {
public String value;
public String path;
public String getValue() {
return value;}
}
}
und Fall B: Klasse innerhalb der Schnittstelle.
public interface Levels{
public class Items {
public String value;
public String path;
public String getValue() {
return value;}
}
}
Korrektur: Platzierung der Methode getvalue.
weitere Infos: Ich bin in der Lage, die Klasse Items in beiden Fällen A und B in einer anderen Klasse zu instanziieren, die die Schnittstelle überhaupt nicht implementiert.
public class Z{//NOTE: NO INTERFACE IMPLEMENTED here!!!!
Levels.Items items = new Levels.Items();
}
Da eine Schnittstelle nicht instanziiert wird, sind alle Elemente innerhalb einer Schnittstelle durch die Punktnotation zugänglich, ohne dass LEVELS Schnittstelle instanziiert wird, einfach weil man eine Schnittstelle nicht instanziieren kann - was eine Klasse, die innerhalb einer Schnittstelle definiert ist, für statische Referenzen durchlässig macht.
Die Aussage, dass die Klasse Items im Fall B nicht statisch ist, macht also keinen Sinn. Da beide Fälle A und B auf die gleiche Weise instanziiert werden, bin ich nicht auf der Suche nach der Semantik, was statisch, innerlich oder verschachtelt ist. Hören Sie auf, mir Antworten zur Semantik zu geben. Ich will die Compiler-, Laufzeit- und Verhaltensunterschiede/Vorteile, oder wenn keine, dann sagen Sie es. Keine weiteren Antworten zur Semantik bitte!!!!! Ein Experte für JVM- oder .NET-VM-Spezifikationen sollte bitte diese Frage beantworten und nicht mit Lehrbuchsemantiken.