Нулевой массив в пустой список
Arrays.asList(E[] e)
возвращает представление массива как List
, но когда массив имеет значение null, он NullPointerException
.
Arrays.asList(null); //NullPointerException.
На самом деле я делаю
List list = possibleNullArray != null ? Arrays.asList(possibleNullArray) : Collections.EMPTY_LIST;
Однако создание класса Utility в моем проекте только для этой цели - вещь, которую я предпочитаю не делать. Есть ли какой-нибудь класс утилиты или библиотека Apache Commons или Guava для преобразования нулевых массивов в пустой List
? (т.е. конвертер с нулевой безопасностью между массивами и коллекциями).
Как бы вы решили эту проблему?
Ответы
Ответ 1
Я не знаю о методе утилиты в Apache Commons/Guava, который создал бы пустой экземпляр List
из null.
Лучшее, что вы, вероятно, можете сделать, это инициализировать возможно нулевой массив заранее, например, с помощью ArrayUtils.nullToEmpty()
. Избавьтесь от нулевого, как только сможете.
SomeObject[] array = ArrayUtils.nullToEmpty(possiblyNullArray);
Ответ 2
Вы можете использовать Java 8 Optional
:
String[] arr = null;
List<String> list = Arrays.asList(Optional.ofNullable(arr).orElse(new String[0]));
Ответ 3
Вы можете использовать Java 8 Optional
и Stream
Optional.ofNullable(possibleNullArray)
.map(Arrays::stream)
.orElseGet(Stream::empty)
.collect(Collectors.toList())