2014-10-16 58 views
0

是否可以在外部類中初始化具有標記爲private的構造函數的內部類的實例?我的印象是,一旦構造函數被聲明爲私有的,除了類內部之外,沒有人可以創建類的實例。示例內部類中的私人建築師在外部類中初始化

Public class Outerclass 
    { 
     newinstance = new Innerclass(); 

     private final class InnerClass 
     { 
     private InnerClass(//paremeters) 
     { 
      //constructor declaration inside 
      } 
     } 
    } 

回答

2

內部類的外部類的成員,使他們擁有完全訪問所有其他成員,以及所有其他成員有充分的機會給他們。

內部類中的訪問標記僅適用於不相關的類。而且由於你的內部階層本身是私人的,所以它只能從外部階層進行建設。

+0

有道理,謝謝 – lboyel 2014-10-17 01:37:15

0

我想你需要看看單例模式。您不能聲明其構造函數標記爲私有的類的實例,但您始終可以使用私有屬性在該類中聲明靜態方法。所以當你調用內部類的靜態方法時,它會將該類的唯一實例返回給調用者。

http://en.wikipedia.org/wiki/Singleton_pattern

+1

擁有實例化某個類的靜態方法並不意味着這個類只有一個實例,所以這不是單例模式 – Dici 2014-10-16 21:13:47

+1

Outer類總是可以訪問內部類成員。而且你不能在內部(也就是非靜態嵌套)類中聲明靜態方法。 – RealSkeptic 2014-10-16 21:16:46

0

您可以在外部類,允許實例化內部類中定義一個公共方法:

public void instantiateInnerClass() { 
    myAttribute = this.new InnerClass(); 
} 

但是,您將無法訪問和直接操作內部類的實例。