我在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类作为静态内部类?
答案 0 :(得分:3)
封闭类型可以访问其中声明(嵌套)的任何成员(以及该成员的成员),无论其声明的访问修饰符如何。
其次,是什么需要将NullPerson类作为静态内部类?
做出他们所做的一切。在我看来,类型本身应该是private
。没有其他类型可以对NullPerson
执行任何操作。