Резюме в значительной степени говорит обо всем. Вот соответствующий фрагмент кода в ImmutableList.createFromIterable()
:
if (element == null) {
throw new NullPointerException("at index " + index);
}
Я сталкивался с этим несколько раз и не понимаю, почему библиотечная функция общего назначения должна накладывать это ограничение.
Редактировать 1: «общего назначения», я был бы счастлив в 95% случаев. Но я не думаю, что написал 100 звонков на номер ImmutableList.of()
, и это меня укусило уже не раз. Может быть, я посторонний, хотя. :)
Редактировать 2: Я думаю, моя большая жалоба состоит в том, что это создает «сбой» при взаимодействии со стандартными коллекциями java.util
. Как вы указали в своем выступлении, проблемы с null
s в коллекциях могут обнаруживаться далеко от места вставки этих нулей. Но если у меня есть длинная цепочка кода, которая помещает пустые значения в стандартную коллекцию на одном конце и обрабатывает их правильно на другом, тогда я не смогу заменить класс коллекций Google в любой момент на этом пути, потому что он немедленно бросить NullPointerException
.