2013-04-13 46 views
1

我想从外部类访问内部类中的私有val,而不创建内部类的一个实例。从外部类访问内部类私有变量

这甚至有可能从the outer class访问private inner class值吗?

在此先感谢。

+2

如果它是一个实例变量,那么你需要...一个实例。 – assylias

回答

5

如果该字段为static,即使它是private,您也可以从外部类访问它。如果内部类字段不为static

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

,它不没有内部类的实例存在:你不需要任何内部或外部类的一个实例。你不能访问不存在的东西。

+0

[代码]的System.out.println( “计算机详细信息” + this.serial_number +”“+新Video_Card(SERIAL_NUMBER * 100))[/代码] 我已经尝试过这一点,但由于某种原因,它的打印out of the following: computer400的详细信息[email protected] computer400的详细信息[email protected] –

2

简短的回答是否定的。

较长的答案如下。内部类只是一个普通类,其外部类的实例有“神奇”参考,可通过OuterClass.this访问。外部类的实例的创建不会自动创建内部类的实例。这意味着,除非内部类本身及其成员为static,否则您无法通过定义从外部类访问内部类的成员,而无需创建内部类的实例。

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

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

+0

请您详细说明“避免创建内心的课堂,除非你真的需要他们“? – Lokesh