Нулевой массив в пустой список

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? (т.е. конвертер с нулевой безопасностью между массивами и коллекциями).

Как бы вы решили эту проблему?

3 ответа

Вы можете использовать Java 8 Optional:

String[] arr = null;
List<string> list = Arrays.asList(Optional.ofNullable(arr).orElse(new String[0]));
</string>


Вы можете использовать Java 8 Optional и Stream

Optional.ofNullable(possibleNullArray)
 .map(Arrays::stream)
 .orElseGet(Stream::empty)
 .collect(Collectors.toList())


Я не знаю о методе утилиты в Apache Commons/Guava, который создал бы пустой экземпляр List из null.

Лучшее, что вы, вероятно, можете сделать, это инициализировать возможно нулевой массив заранее, например, с помощью ArrayUtils.nullToEmpty(). Избавьтесь от нулевого, как только сможете.

SomeObject[] array = ArrayUtils.nullToEmpty(possiblyNullArray);

licensed under cc by-sa 3.0 with attribution.