从内部类中调用外部类的成员

时间:2012-11-30 11:32:46

标签: java

这是我的班级:

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

2 个答案:

答案 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类的成员