我阅读了以下有关 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 类有一个私有(private)构造函数,那么如何在类范围之外进行对象实例化呢?
其次,为什么需要将NullPerson类设为静态内部类?
最佳答案
封闭类型可以访问在其中声明(嵌套)的任何成员(以及该成员的成员),无论其声明的访问修饰符如何。
Secondly, what is the need of making the NullPerson class as a static inner class?
让他们所做的事情成为可能。在我看来,类型本身应该是private
。其他类型无法使用 NullPerson
执行任何操作。
关于java - 私有(private)构造函数对象初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25294122/