2013-04-13 203 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