Просматривая код для библиотеки, которую я использую, я наткнулся на этот фрагмент кода:
public class SomeClass {
private static final class Null {
/* ... */
}
public static final Object NULL = new Null();
}
Это обычная практика - иметь специальный объект NULL для класса, который используется вместо null
в Java? Каковы преимущества такого подхода вместо использования встроенного в Java null
?
Основная причина моего любопытства в том, что во время использования библиотеки я постоянно проверял, является ли SomeClass нулевым, не понимая, что они используют специальный объект NULL для обозначения нулевого объекта SomeClass.
EDIT: Для тех, кому интересно, точный код из источника:
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();
}