内部类中的私有构造函数在外部类中初始化
Posted
技术标签:
【中文标题】内部类中的私有构造函数在外部类中初始化【英文标题】:Private construtor in inner class initialized within outer class 【发布时间】:2014-12-12 09:07:27 【问题描述】:是否可以初始化内部类的实例,该实例具有从外部类中标记为私有的构造函数。我的印象是,一旦构造函数被声明为私有,除了类本身之外,没有人可以创建该类的实例。示例
Public class Outerclass
newinstance = new Innerclass();
private final class InnerClass
private InnerClass(//paremeters)
//constructor declaration inside
【问题讨论】:
【参考方案1】:我认为您需要研究单例模式。您不能声明其构造函数被标记为私有的类的实例,但您始终可以在该类中声明具有私有属性的静态方法。因此,当您调用内部类的静态方法时,它会将该类的唯一实例返回给调用者。
http://en.wikipedia.org/wiki/Singleton_pattern
【讨论】:
拥有静态方法来实例化某个类并不意味着该类只有一个实例,因此这不是单例模式 外部类总是可以访问内部类成员。而且您不能在内部(即非静态嵌套)类中声明静态方法。【参考方案2】:内部类是其外部类的成员,因此它们可以完全访问所有其他成员,并且所有其他成员都可以完全访问它们。
内部类中的访问标记仅适用于不相关的类。而且由于您的内部类本身是私有的,因此只能从其外部类进行构造。
【讨论】:
【参考方案3】:您可以在外部类上定义一个公共方法来实例化内部类:
public void instantiateInnerClass()
myAttribute = this.new InnerClass();
但是,您将无法直接访问和操作内部类的实例。
【讨论】:
以上是关于内部类中的私有构造函数在外部类中初始化的主要内容,如果未能解决你的问题,请参考以下文章