在浏览我正在使用的库的一些代码时,我遇到了这段代码:
public class SomeClass {
private static final class Null {
/* ... */
}
public static final Object NULL = new Null();
}
对于使用的类而不是Java的null,这是一种常见的做法吗?这样做有什么好处而不是使用Java内置的null?
我很好奇的主要原因是在使用库时,我一直在检查SomeClass是否为null,而没有意识到他们使用特殊的NULL对象来表示SomeClass的null对象.
编辑:对于那些想知道的人,源的确切代码是:
public class JSONObject {
private static final class Null {
protected final Object clone() {
return this;
}
public boolean equals(Object object) {
return object == null || object == this;
}
public String toString() {
return "null";
}
}
public static final Object NULL = new Null();
}