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