return new ArrayList<T>(a);
}
private static class ArrayList<E> extends
AbstractList<E>
implements RandomAccess,
java.io.Serializable
{
……
}
可以看到这个ArrayList继承于AbstractList,AbstractList里确实有remove(int index)方法,但是你可以看到这个抽象类没有真正实现这个方法,仅仅抛出一个异常。
public E
remove(int index) {
throw new UnsupportedOperationException();
}
问题就在于此,Arrays中的ArrayList类并没有重写这个remove方法,结果导致在我编写的方法中抛出异常。结果我只好迭代读取数组返回一个“真正的ArrayList”(java.util.ArrayList)来使用我那个方法。要不然的话,那还要自己做一个类去继承这个静态的ArrayList类重写方法。那可不怎么实用了。
要真正了解java还真是十分困难,要是没有源码的支持,恐怕并不知道问题所在。