我阅读了以下有关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类作为静态内部类有什么需要?

最佳答案

封闭类型可以访问其中声明(嵌套)的任何成员(和该成员的成员),而无需考虑其声明的访问修饰符。


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


使他们所做的一切成为可能。我认为类型本身应为privateNullPerson没有其他类型可以做任何事情。

关于java - 私有(private)构造函数对象初始化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25294122/

10-13 07:30