在Java中实例化内部类时,为什么需要创建对此的新引用?在第一个示例代码中,对Inner进行了引用,然后尝试使用该实例实例化Inner()类,该类不起作用,但是在第二个示例代码中(仍对Inner进行了引用),实例化Inner()类的成功,因为使用了“内部内部”而不是“内部”。因此,就我(新手)的理解而言,必须重新参考吗?
public class Outer{
Inner inner;
private class Inner{}
public static void main(String[] args){
Outer outer = new Outer;
inner = outer.new Inner(); // doesn't work (only difference in code)
}
}
public class Outer{
Inner inner;
private class Inner{}
public static void main(String[] args){
Outer outer = new Outer;
Inner inner = outer.new Inner(); // works (only difference in code)
}
}
答案 0 :(得分:1)
在第一个示例中,实例inner
必须声明为static
,才能在另一个静态上下文中使用。
在后者中,全局变量inner
未使用,因为本地声明和初始化优先。
答案 1 :(得分:0)
从第一个代码开始,您尝试使用不允许的静态方法实例化非静态变量。
但是,第二个片段是在方法内本地进行实例化的(这不会影响方法外变量的值)。因此,第二个片段在JAVA中有效