话不多说,直接上问题代码:
package com.pajk.recsys.dk.test;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import com.pajk.recsys.utils.CommonUtils;public class CommonTest { public static List<String> UnsupportedOperationExceptionTest(List<String> source){ source.add("12312"); return source; } public static void main(String args[]){ String str = "123,456,7899"; String[] items = str.trim().split(","); List<String> realAdd = Arrays.asList(items); realAdd.add("123123123"); List<String> xxx = UnsupportedOperationExceptionTest(realAdd); System.out.PRintln(xxx); }}上述代码抛出异常:
Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.add(Unknown Source) at java.util.AbstractList.add(Unknown Source) at com.pajk.recsys.dk.test.CommonTest.main(CommonTest.java:20)问题出在Arrays.asList(items)。
由上边代码可知, asList返回一个final的,固定长度的ArrayList类,并不是java.util.ArrayList, 所以直接利用它无法执行改变list长度的操作, 比如 add、remove等。
List<String> realAdd = new ArrayList(Arrays.asList(items));
新闻热点
疑难解答