一定要注意:Arrays.asList()方法返回的List集合不是普通的ArrayList类的实例,而是Arrays的内部类ArrayList的实例。
ArrayList类和Arrays.ArrayList类虽然都继承AbstractList类,但他们本身就不是同一个类,所以可以使用List变量接收,但是相互间不可以转换,错误类型同下面的例子:
class Person{
}
class EarthPerson extends Person
{
}
class MoonPerson extends Person
{
}
public class PersonTest
{
public static void main(String[] args){
// TODO Auto-generated method stub
Person p = new EarthPerson();
MoonPerson mp = (MoonPerson)p;
}
}
另外附Arrays.ArrayList的声明:
private static class ArrayList<E> extends AbstractList<E>