【发布时间】:2015-01-31 19:32:54
【问题描述】:
Arrays.asList(E[] e) 以 List 的形式返回数组视图,但当数组为空时,它会抛出 NullPointerException。
Arrays.asList(null); //NullPointerException.
其实我在做
List list = possibleNullArray != null ? Arrays.asList(possibleNullArray) : Collections.EMPTY_LIST;
但是,仅出于此目的在我的项目中创建实用程序类是我不愿意做的事情。是否有一些实用程序类或库(如 Apache Commons 或 Guava)将空数组转换为空 List? (即数组和集合之间的空安全转换器)。
你会如何解决这个问题?
【问题讨论】:
-
当然你会得到NPE,你将它设置为null,Arrays.asList();如果我没记错的话,将你的对象转换为数组/数组列表/数组的列表。
-
当您考虑到可读性时,使用空集合或零长度数组而不是 null 是一种很好的做法。我没有讨论为什么 Array.asList(null) 会抛出 NullPointerException。这是其创建者的设计决定。我询问一个实用程序类或库来将 null arras o 集合转换为空数组或集合。
-
如果您投反对票,请考虑给出理由。谢谢。
-
Arrays.asList()和其他类似方法,例如如果传入的集合是null,new ArrayList<>(...)不应该抛出 NPE,它们应该返回一个空列表。在这种情况下抛出 NPE 非常荒谬。
标签: java arrays collections