这是我的班级:
public class T {
public int num = 100;
private int num2 = -1;
//inner class
public static class Inner {
private int num2 = 250;
public void method() {
System.out.println(num2);//calls inner class num
System.out.println(...);//should print class T num
System.out.println(...);//should print class T num2
}
}
}
如何制作第二个和第三个 println 来打印 T 类的 num 和 num2 ?
答案 0 :(得分:7)
你不能 - 你的Inner
类不是内部类,它是一个静态嵌套类。换句话说,它独立存在而没有引用T的实例。
如果您删除了static
声明的Inner
部分,则可以:
public class Inner {
private int num2 = 250;
public void method() {
System.out.println(num2);//calls inner class num
System.out.println(num);//should print class T num
System.out.println(T.this.num2);//should print class T num2
}
}
答案 1 :(得分:4)
当您声明嵌套类static
时,这意味着您不需要外部类的实例来创建案例Inner
中的嵌套类的实例,所以您无法访问Outer
类的属性。
但删除static
保证,例如Inner
类将有Outer
类,因此它可以访问Outer
类的成员