Set<String> something = null;
List<String> = new ArrayList<>(something);
此代码抛出NullPointerException
。有没有更好的方法进行转换?
答案 0 :(得分:2)
它NullPointerException
Javadoc specifies,因为它试图将不存在的集合转换为ArrayList
。
公开
ArrayList(Collection<? extends E> c)
按照集合迭代器返回的顺序构造一个包含指定集合元素的列表。
参数:
c
- 要将其元素放入此列表的集合抛出:
NullPointerException
- 如果指定的集合是null
为什么不实际制作Set
对象?尝试:
Set<String> something = new HashSet<>();
List<String> stringList = new ArrayList<>(something);
如果您希望在something
为null
时制作一个空列表,请尝试:
List<String> stringList =
something == null ? new ArrayList<>() : new ArrayList<>(something);
答案 1 :(得分:0)
如果您希望在set为null时列表为null,请尝试:
Set<String> something = //Something..... either null or not null
List<String> somethingList = something == null ? null : new ArrayList<>(something);
空指针异常的原因是ArrayList(Collection<? extends T> collection)
构造函数(您正在调用的构造函数)尝试迭代传入的集合。由于该集合为null,您当然会点击空指针。