//下面的代码会出异常 private List<String> playCards = new ArrayList<String>();//存储一次要出的牌的图片地址 playCards = Splitter.on(",").splitToList(showCard); playCards.clear(); =================================分界线============================================== //下面的代码不出异常 private List<String> playCards = new ArrayList<String>();//存储一次要出的牌的图片地址 playCards = new ArrayList<String>(Splitter.on(",").splitToList(showCard)); playCards.clear(); 原因 : ava.lang.UnsupportedOperationException 异常。原因在于使用Arrays.asList()后调用add,remove这些method时出现java.lang.UnsupportedOperationException异常。这是由于Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(),add()等,所以throw UnsupportedOperationException。 解决方法是采用构造方法ArrayAdapter(Context, int, List), 第三个参数传入ArrayList, 将Objects[] 转化为 ArrayList, new ArrayList(Arrays.asList(objects)) |
|
来自: ansatsing > 《java高效编程》