null的class是什么?

What is the class of null?

在 java 中,当我们像这样将 null 分配给任何对象时:

private Apple apple = null;

java中是否有与此null相关的class?

因为在 Apache common-lang jar 中他们这样定义 null:

public static class Null implements Serializable {
            /**
             * Required for serialization support. Declare serialization compatibility with Commons Lang 1.0            *             * @see java.io.Serializable
             */
           private static final long serialVersionUID = 7092611880189329093L;

            /**
            * Restricted constructor - singleton.
             */
            Null() {
               super();
            }

           /**
             * <p>Ensure singleton.</p>
            * 
           * @return the singleton value
             */
            private Object readResolve() {
                return ObjectUtils.NULL;
            }
       }

他们为什么要这样做?

还是只是一个位模式?

在 java 中 null 不是对象,因此没有 class。

虽然它确实有一个类型 - 请参阅 the language specification

Apache 创建了一个名为 Null(不是 null)的 class。这是完全不同的事情。我猜他们创建它是为了可以用实际对象表示 null - 这可能在某些方面使编程更容易。

在 java 中,null 是关键字,而不是 class 或对象。