Undocumented String.compareTo(null) NPE?

2022-09-01 19:02:15

以下小测试会引发 NPE:

public class Test {

    public static void  main(String[] args) {

        String a = "a";
        String b = null;

        System.out.println(a.compareTo(b));

    }

}

然而,compareTo() 的 Javadoc 没有提到参数不能是 。这很奇怪,因为Javadocs通常会提到参数不能是。nullnull

这只是文档中的一个小故障,还是我错过了更根本的原因/扭曲?


答案 1

当您查看可比较界面时,您可以得到一些解释:

请注意,null 不是任何类的实例,e.compareTo(null) 应该抛出 NullPointerException,即使 e.equals(null) 返回 false。


答案 2