Наличие статического объекта "NULL" в Java?

Просматривая код для библиотеки, которую я использую, я наткнулся на этот фрагмент кода:

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();
}
7
задан Ivan 28 October 2011 в 20:52
поделиться