В чем разница между этими двумя объявлениями внутреннего класса? Также прокомментируйте преимущества / недостатки?
case A: класс внутри класса.
public class Levels {
static public class Items {
public String value;
public String path;
public String getValue() {
return value;}
}
}
и случай B: класс в интерфейсе.
public interface Levels{
public class Items {
public String value;
public String path;
public String getValue() {
return value;}
}
}
Внесены исправления: в метод getvalue.
дополнительная информация:
Я могу создать экземпляр класса Items в обоих случаях A и B в другом классе, который не реализует интерфейс ВСЕ.
public class Z{//NOTE: NO INTERFACE IMPLEMENTED here!!!!
Levels.Items items = new Levels.Items();
}
Так как интерфейс не создается, все элементы внутри интерфейса доступны посредством точечной нотации без создания интерфейса LEVELS просто потому, что вы не можете создать экземпляр интерфейса - эффективно делая класс, определенный внутри интерфейса, проницаемым для статической ссылки.
То, что класс Items в случае B не является статическим, не имеет смысла. Поскольку оба случая A и B создаются одинаково, я не ищу семантику статического, внутреннего или вложенного. Прекратите давать мне ответы на семантику. Я хочу, чтобы компилятор, различия во времени и поведенческие различия / преимущества, или, если нет, то так и скажите. Нет больше ответов по семантике, пожалуйста !!!!! Эксперт по спецификациям JVM или .NET VM, пожалуйста, ответьте на этот вопрос, а не на семантикусы учебников.