Недокументированный 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
.
Это просто глюк в документации или есть более фундаментальная причина/твист, который мне не хватает?
Ответы
Ответ 1
Вы можете получить некоторые объяснения, если вы посмотрите на интерфейс Comparable:
Обратите внимание, что null не является экземпляром какого-либо класса, а e.compareTo(null) должен вызывать исключение NullPointerException, даже если e.equals(null) возвращает ложь.