从外部类访问内部类私有变量

时间:2013-04-13 10:10:29

标签: java inner-classes outer-classes

我试图在外部类中访问内部类中的私有val,而不创建内部类的实例。

甚至可以从private inner class访问the outer class值?

提前致谢。

2 个答案:

答案 0 :(得分:5)

如果字段为static,则您已经可以从外部类访问它,即使它是private。您不需要内部或外部类的实例:

public class Clazz {
    class Inner {
        private static final int N = 10;
    }
    public static void main(String[] args) {
        System.out.println(Inner.N);
    }
}

如果内部类字段不是static,则它没有存在而没有内部类的实例。您无法访问不存在的内容。

答案 1 :(得分:2)

简短的回答是否定的。

答案越长越好。内心阶级只是一个普通的阶级,具有"魔法"引用其外部类的实例,可通过OuterClass.this访问。创建外部类的实例不会自动创建内部类的实例。这意味着,除非内部类本身及其成员为static,否则您无法通过定义从外部类访问内部类的成员而不创建内部类的实例。

实际上,您可以创建外部类的一个实例和相应内部类的10个实例。如何在不创建实例的情况下访问内部类的成员?

BTW一般建议:除非你真的需要,否则避免创建内部类。