私有构造函数对象初始化

时间:2014-08-13 19:01:37

标签: java

我在NULL对象模式上阅读了以下代码,但有一点我真的不清楚。代码如下。

//Null.java
package test_package1;

public interface Null {

}

//Person.java
class Person {
    public final String first;
    public final String last;
    public final String address;
    // etc.
    public Person(String first, String last, String address){
        this.first = first;
        this.last = last;
        this.address = address;
    }
    public String toString() {
        return "Person: " + first + " " + last + " " + address;
    }
    public static class NullPerson
    extends Person implements Null {
        private NullPerson() { super("None", "None", "None"); }
        public String toString() { return "NullPerson"; }
    }
    public static final Person NULL = new NullPerson();
}

现在,我有一个问题:为什么以下代码段有效:

public static final Person NULL = new NullPerson();

NullPerson类有一个私有构造函数,那么如何在类范围之外实现对象实例化呢?

其次,是什么需要将NullPerson类作为静态内部类?

1 个答案:

答案 0 :(得分:3)

封闭类型可以访问其中声明(嵌套)的任何成员(以及该成员的成员),无论其声明的访问修饰符如何。

  

其次,是什么需要将NullPerson类作为静态内部类?

做出他们所做的一切。在我看来,类型本身应该是private。没有其他类型可以对NullPerson执行任何操作。