这两种内部类声明有什么区别?还请评论其优缺点。
情况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方法的位置。
进一步信息: 我能够在完全不实现接口的另一个类中的两种情况 A 和 B 中实例化 Items 类。
public class Z{//NOTE: NO INTERFACE IMPLEMENTED here!!!!
Levels.Items items = new Levels.Items();
}
由于接口不会被实例化,因此可以通过点表示法访问接口内的所有元素,而无需实例化LEVELS接口,因为您不能实例化一个接口 - 这有效地使得定义在接口内部的类对静态引用具有渗透性。
因此,在B案例中说Items类不是静态的是没有意义的。由于A和B两种情况的实例化方式相同,我不想针对静态、内部或嵌套的语义进行讨论。请停止给我关于语义的答案。我想知道编译器、运行时和行为差异/优势,如果没有,则说出来。请不要再回答关于语义的问题了!希望熟悉JVM或.NET VM规范内部的专家能够回答这个问题,而不是那些只懂书本语义学的人。