Java 嵌套 Class:从外部 class 实例化内部 class

Java Nested Class: Instantiating inner class from outer class

在 Java 中实例化内部 class 时,为什么我需要创建对它的新引用?在第一个示例代码中,对 Inner 进行了引用,然后使用该引用尝试实例化 class Inner() 这不起作用,但在第二个示例代码中(仍然对 Inner 进行了引用),class 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)
 }
}

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

但是第二个片段,您是在方法内部进行本地实例化(这不会影响方法外部变量的值)。所以第二个片段适用于 JAVA

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

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