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
未被使用,因为局部声明和初始化优先。
在 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
未被使用,因为局部声明和初始化优先。