String compareTo

mih*_*imi 2 java null nullpointerexception

有没有人知道为什么String.compareTo没有编程在null参数方面表现得更加慷慨?

在我看来,下一个序列应该返回"1"或至少javadoc应该更具体的NPE.在这种情况下equals()返回false,我猜equals并且compareTo应该是一致的.

例如

String nullString = null;
System.out.println ("test".equals(nullString));
System.out.println ("test".compareTo(nullString));
Run Code Online (Sandbox Code Playgroud)

投掷NPE:

false
Exception in thread "main" java.lang.NullPointerException
    at java.lang.String.compareTo(String.java:1177)
Run Code Online (Sandbox Code Playgroud)

添加到它.如果您要在代码中进行compareTo,那么您是否会验证空值?

Mat*_*all 9

因为它compareTo()(强调添加)的记录行为:

一类的自然顺序C被说成是与equals一致当且仅当e1.compareTo(e2) == 0具有相同的布尔值的e1.equals(e2)每一个e1e2阶级的C.请注意,这null不是任何类的实例,并且e.compareTo(null)应该抛出一个NullPointerException偶数e.equals(null)返回false.

至于.equals()返回false而不是NPEing,再次,它在文档中:

对于任何非空引用值x,x.equals(null)应返回false.