我阅读了以下有关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类作为静态内部类有什么需要?
使他们所做的一切成为可能。我认为类型本身应为private
。 NullPerson
没有其他类型可以做任何事情。
关于java - 私有(private)构造函数对象初始化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25294122/