项目中我需要一个ArrayList数组存放多个实体类对象,其中2个实体类对象是初始化时就需要存进去,另外的需要从另一个List循环提取数据存放,为了编码简洁使用了Arrays.asList()
List<CustomerInfoDto> customerInfoDtos = Arrays.asList(bbrCustomerInfoDto, tbrCustomerInfoDto);
但之后使用add添加实体类元素时出现了以下报错
java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148) at java.util.AbstractList.add(AbstractList.java:108)
通过查询才想起来,Arrays.asList()转化的数组长度是不可改变的,该方法返回的是Arrays的内部类ArrayList, 而不是java.util.ArrayList,不支持add()、remove()、clear()等方法。 ArrayList的初始化简洁写法可以使用如下“双括号初始化方法”
ArrayList<CustomerInfoDto> customerInfoDtos = new ArrayList<CustomerInfoDto>() {{
add(bbrCustomerInfoDto);
add(tbrCustomerInfoDto);
}};
双括号初始化方法的效率问题可以参考https://blog.csdn.net/xukun5137/article/details/78275201
|