java 集合容易犯的异常
String[] ss=new String[]{"a","b"};
List<String> list= Arrays.asList(ss);
list.add("dd");
for(String s:list)
{
System.out.println(s);
}
这段代码 会抛出
Exception in thread "main" java.lang.UnsupportedOperationException
原因是asList返回的不是一个我们常用的ArrayList,只是一个内部类。
仅仅是把一个数组以List的现实表示,内部还是一个数组,还是仅仅有数组
的一些功能。
add的方法就直接抛出异常了。。
asList的作用只是为了 方便使用。
底层仍然是一个数组,保持数组能拥有的所有操作。
比如修改某一个元素,或者遍历。
但是不能够改变长度。
只是以List形态出现,为了某些仅对List读操作的方法可以顺利的执行。
可以用这种方式去实现
String[] ss=new String[]{"a","b"};
List<String> list=new ArrayList<String>();
list.addAllI( Arrays.asList(ss););
list.add("dd");
for(String s:list)
{
System.out.println(s);
}
还有就是 数组不可以强制转换
Object[] os=new Object[]{"a","b"};
String[] ss=(String[]) os;
这样也会报错:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
at com.sunline.flow.ide.project.navigator.Test.main(Test.java:42)