最近在修改同事的代码的时候,报了一个UnsupportedOperationException异常,代码如下:
List<String> ccEmail = Splitter.on(",").splitToList(templateDetail.getCcEmail());
String supplierCcEmail = venderMapper.selectCcEmailByName(supplierName);
List<String> supplierCcEmails = Arrays.asList(supplierCcEmail.split(","));
ccEmail.addAll(supplierCcEmails);
String[] ccs = ccEmail.toArray(new String[ccEmail.size()]);
在运行的时候,这行代码会报异常:
ccEmail.addAll(supplierCcEmails);
通过打印
System.out.println(ccEmail.getClass().toString());
发现打印的是
class java.util.Collections$UnmodifiableRandomAccessList
因为Unmodifiable的List不能做修改,不能使用allAll()方法,所以解决的方案是
List<String> ccEmail = new ArrayList<>(Splitter.on(",").splitToList(templateDetail.getCcEmail()));
把splitToList()方法得到的返回值当作参数,再创建一个ArrayList即可。