一、首先,我们来一个简单的程序
importjava.util.ArrayList;importjava.util.List;public classPerson {public static voidmain(String[] args) {
Person p1= newPerson();
Person p2= newPerson();
List list= new ArrayList();//List是一个接口
list.add(p1);
list.add(p2);//这里是将对象加入到list中
for(int i=0;i
Person p=(Person)list.get(i);//注意,这里一定要强制类型转换,因为List中取出的对象都是Object类型的,希望对你有所帮助
}
}
}
这个程序本身没有太大的特别之处,但是我们从一些简单的语句里面可以看到Java中的List集合的实现;
首先List是一个接口,查看下源代码:
确实是一个接口,而且是继承自泛型类Collection的一个List的接口;
我们在看看ArrayList源代:
ArrayList是一个泛型类继承自AbstractList;
在进一步,我们查看AbstractList源代码:
AbstractList是一个泛型类,实现List接口;
从而我们找到了List与ArrayList的联系:ArrayList类实现List接口,从而相当而言List是ArrayList的父类型;
根据多态:父类型的引用可以指向子类型的对象
在:List list = new ArrayList();//List是一个接口 ---------------------------这段代码中list相当与List类型的一个引用,而ArrayList是子类型的对象,从而list可以指向new
ArrayList()所创建的对象
再看看下面的代码:
Person p1 = new Person(); Person p2 = new Person(); List list = new ArrayList();//List是一个接口 list.add(p1); list.add(p2);//这里是将对象加入到list中
由list.add(p1);我们可以知道list可以添加运行时才得知类型的对象
*我们又来看看下面的代码:
List list2 = new LinkedList();
他也是List接口的实现类;
FROM: http://www.cnblogs.com/super-d2/archive/2013/02/18/2916241.html