今天使用Collections.emptyList(),返回一个空的List
但是发现它不支持Add功能,调用Add会抛出unsupportedException,
在以后要返回一个空的List,并还需要后续操作时,不能使用Collections.emptyList()方法,看文档发现,List的实现类都有自己的实现,而返回的EmptyList的实现没有实现add(int index, E element方法,使用了
AbstractList.add(int index, E element){
throw new UnsupportedOperationException();
}
@Test
public void test1() {
String str = "";
List<String> list = getList(str);
System.out.println(list.size());
}
private static List<String> getList(String str) {
if (StringUtils.isBlank(str)) {
// 使用时不会报空指针
return Collections.emptyList();
// 使用null报空指针异常
// return null;
}
List<String> list = new ArrayList<String>();
list.add(str);
return list;
}
@Test
public void test2() {
String str = "abc";
List<String> list = Collections.emptyList();
list.add(str);
System.out.println(list.size());
}
如果需要对collections.emptyList()进行增删操作的话,就需要将collections.emptyList()转换成ArrayList()进行操作。
@Test
public void test2() {
String str = "abc";
List<String> list = Collections.emptyList();
List<String> resultList = new ArrayList<>(list);
resultList.add(str);
System.out.println(resultList.size());
System.out.println(resultList);
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_43842093/article/details/122386221
内容来源于网络,如有侵权,请联系作者删除!