Java嵌套类:从外部类实例化内部类

时间:2019-10-22 03:47:50

标签: java class nested instantiation

在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)
 }
}

2 个答案:

答案 0 :(得分:1)

在第一个示例中,实例inner必须声明为static,才能在另一个静态上下文中使用。

在后者中,全局变量inner未使用,因为本地声明和初始化优先。

答案 1 :(得分:0)

从第一个代码开始,您尝试使用不允许的静态方法实例化非静态变量。

但是,第二个片段是在方法内本地进行实例化的(这不会影响方法外变量的值)。因此,第二个片段在JAVA中有效