【发布时间】:2013-04-13 10:10:29
【问题描述】:
我正在尝试从外部类访问内部类内部的私有 val,而不创建内部类的实例。
这甚至可以从the outer class 访问private inner class 值吗?
提前致谢。
【问题讨论】:
-
如果它是一个实例变量,那么你需要...一个实例。
标签: java inner-classes outer-classes
我正在尝试从外部类访问内部类内部的私有 val,而不创建内部类的实例。
这甚至可以从the outer class 访问private inner class 值吗?
提前致谢。
【问题讨论】:
标签: java inner-classes outer-classes
如果字段是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,那么如果没有内部类的实例,它就不会存在。你不能访问不存在的东西。
【讨论】:
简短的回答是否定的。
更长的答案如下。内部类只是一个常规类,它具有对其外部类的 instance 的“神奇”引用,可以通过OuterClass.this 访问。创建外部类的实例不会自动创建内部类的实例。这意味着除非内部类本身及其成员是static,否则您不能在不创建内部类实例的情况下从外部类访问内部类的成员。
实际上,您可以创建一个外部类实例和 10 个相应内部类实例。如何在不创建实例的情况下访问内部类的成员?
顺便说一句,一般建议:避免创建内部类,除非你真的需要它们。
【讨论】: