Equality is supposed to be symmetric, right?
Object someObject = new Object();
Object NULL = null;
NULL.equals(someObject) => NullPointerException
someObject.equals(NULL) => false
What is the rationale for not having the second form throw a NullPointerException?
Equality is certainly defined to be symmetric in a theoretical sense, but it also isn’t defined at all on non-existent objects (which is what null represents).
Hence any behaviour when applied to null would be equally valid. It could return a live rabbit and still not contradict the theoretical definition of equality.
In such a case, it’s a pretty reasonable implementation decision on behalf of the designers of Java that calling equals on a null value should throw a NullPointerException, as that is consistent with calling any other method on a null value.