日期:2014-05-20  浏览次数:20667 次

一个关于接口的问题
在java.util中的Collection接口有子接口List,List有其实现ArrayList类。那么Collection<E> a = new ArrayList<E>();和List<E> a = new ArrayList<E>();的区别是什么呢?

------解决方案--------------------
申明引用的类型不一样,实际对象类型是一样的。
区别就是,第一个把ArrayList当作Collection来使用,第二个把ArrayList当作List来使用。
------解决方案--------------------
两者都有的方法,用起来效果一样(即,具体实现都是ArrayList),区别在于:

声明成前者,就不能使用add(int index, E element) ;addAll(int index, Collection<? extends E> c) 等List中定义了的,而Collection中没有定义的方法了。


------解决方案--------------------
引用类型 越靠上,可使用的方法越少!!!