public interface List<E>extends Collection<E>也就是说Collection的使用范围可能比List的大,也就是说=后的具体实现可以选择的范围就越广举例:List all = new ArrayList(); 这个all就只能限定在list的具体实现类范围里,你就不能使用像HashSet这样的实现 但是Collection all = new ArrayList();中的all就可以使用HashSet来代替ArrayList 具体一点就是: List all = new ArrayList(); // ok Collection all = new ArrayList(); // okList all = new HashSet(); // error Collection all = new HashSet(); // ok懂否?
这个all就只能限定在list的具体实现类范围里,你就不能使用像HashSet这样的实现
但是Collection all = new ArrayList();中的all就可以使用HashSet来代替ArrayList
具体一点就是:
List all = new ArrayList(); // ok
Collection all = new ArrayList(); // okList all = new HashSet(); // error
Collection all = new HashSet(); // ok懂否?
抽象来说就是使collection是arrlist的父类,试用的种类多
但有时候这并不是好事情
如果东西放到数组里,然后添加到的属性不合适会保语法错的
但collection不会,要你运行的时候才会报错
1楼讲的很深刻