java.lang.UnsupportedOperationException
第一次遇到这个异常,有点懵,后来看源码才知道。
Arrays.asList(Object aobj[])返回的ArrayList是这样的。
public class Arrays
{
private static class ArrayList extends AbstractList
implements RandomAccess, Serializable
{
public int size()
{
return a.length;
}
public Object[] toArray()
{
return (Object[])((Object []) (a)).clone();
}
public Object[] toArray(Object aobj[])
{
int i = size();
if(aobj.length < i)
return Arrays.copyOf(a, i, ((Object) (aobj)).getClass());
System.arraycopy(((Object) (a)), 0, ((Object) (aobj)), 0, i);
if(aobj.length > i)
aobj[i] = null;
return aobj;
}
public Object get(int i)
{
return a[i];
}
public Object set(int i, Object obj)
{
Object obj1 = a[i];
a[i] = obj;
return obj1;
}
public int indexOf(Object obj)
{
if(obj == null)
{
for(int i = 0; i < a.length; i++)
if(a[i] == null)
return i;
} else
{
for(int j = 0; j < a.length; j++)
if(obj.equals(a[j]))
return j;
}
return -1;
}
public boolean contains(Object obj)
{
return indexOf(obj) != -1;
}
private static final long serialVersionUID = -2764017481108945198L;
private final Object a[];
ArrayList(Object aobj[])
{
if(aobj == null)
{
throw new NullPointerException();
} else
{
a = aobj;
return;
}
}
}
在AbstractList中 add、remove、set方法是这样的
那么报错原因清晰了。
- -