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

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())