2

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

这甚至可以从 访问private inner classthe outer class吗?

提前致谢。

4

2 回答 2

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);
    }
}

如果内部类字段 not ,则如果没有内部类的实例static,它就不存在。您无法访问不存在的东西。

于 2013-04-13T10:15:24.727 回答
2

最简洁的答案是不。

较长的答案如下。内部类只是一个常规类,它具有对其外部类实例的“魔术”引用,可以通过OuterClass.this. 创建外部类的实例不会自动创建内部类的实例。这意味着您不能根据定义从外部类访问内部类的成员而不创建内部类的实例,除非内部类本身及其成员是static.

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

顺便说一句,一般建议:除非你真的需要它们,否则避免创建内部类。

于 2013-04-13T10:15:52.587 回答