内部类中的私有构造器在外部类中初始化

时间:2014-10-16 21:06:50

标签: java constructor access-modifiers

是否可以初始化内部类的实例,该实例在外部类中具有标记为private的构造函数。我的印象是,一旦构造函数被声明为private,没有人可以创建该类的实例,除非在类本身内。实施例

Public class Outerclass 
    {
        newinstance = new Innerclass();

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

3 个答案:

答案 0 :(得分:2)

内部类是其外部类的成员,因此他们可以完全访问所有其他成员,并且所有其他成员都可以完全访问它们。

内部类中的访问标记仅适用于不相关的类。而且由于你的内部类本身就是私有的,所以只能从外部类中进行构造。

答案 1 :(得分:0)

我认为你需要研究Singleton模式。您不能声明其构造函数被标记为私有的类的实例,但您始终可以在该类中使用私有属性声明静态方法。因此,当您调用内部类的静态方法时,它会将该类的唯一实例返回给调用者。

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

答案 2 :(得分:0)

您可以在外部类上定义一个公共方法,以便实例化内部类:

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

但是,您将无法直接访问和操作内部类的实例。