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
? (即数组和集合之间的零安全转换器)。
你会如何解决这个问题?
答案 0 :(得分:35)
您可以使用Java 8 Optional
:
String[] arr = null;
List<String> list = Arrays.asList(Optional.ofNullable(arr).orElse(new String[0]));
答案 1 :(得分:15)
我不知道Apache Commons / Guava中的任何util方法会从null创建一个空的List
实例。
您可能做的最好的事情是事先初始化可能为null的数组,例如与ArrayUtils.nullToEmpty()
。尽快摆脱空位。
SomeObject[] array = ArrayUtils.nullToEmpty(possiblyNullArray);
答案 2 :(得分:13)
您可以使用Java 8 Optional
和Stream
Optional.ofNullable(possibleNullArray)
.map(Arrays::stream)
.orElseGet(Stream::empty)
.collect(Collectors.toList())