Подтвердить что ты не робот

Недокументированный String.compareTo(null) NPE?

Следующий небольшой тест выдает NPE:

public class Test {

    public static void  main(String[] args) {

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

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

    }

}

Тем не менее, Javadoc compareTo() не упоминает, что параметр не может быть null. Это странно, поскольку Javadocs обычно упоминает, что параметры не могут быть null.

Это просто глюк в документации или есть более фундаментальная причина/твист, который мне не хватает?

4b9b3361

Ответ 1

Вы можете получить некоторые объяснения, если вы посмотрите на интерфейс Comparable:

Обратите внимание, что null не является экземпляром какого-либо класса, а e.compareTo(null) должен вызывать исключение NullPointerException, даже если e.equals(null) возвращает ложь.