2014-10-16 56 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(); 
} 

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