本帖最后由 任文杰 于 2012-8-30 21:10 编辑
首先,我说下前两个:
List a = new ArrayList();
ArrayList a = new ArrayList();
第一个a是List接口的实例,可以再被赋值为所有实现了List接口的类或其子类的实例,这个list变量a可以当作List接口及其其父接口作为参数传递。而下面那个a变量表示ArrayList类的实例,必须是ArrayList类或其子类的实例才可以赋值给这个a变量,这个a变量可以当作ArrayList类或其父类作为参数传递,也可以作为ArrayList类及其父类实现了的接口类型作为参数传递(例如List接口)。
总的说来是多态的应用了。
如果你到最后这个a变量只用作ArrayList类的实例,那么你大可以用下面那种方式,但是上面那种方式更灵活,比如你现在把它赋值为new ArrayList()。那么完全可以把它当作ArrayList类的实例来用,然后用完了你还可以把它赋值为其他的实现了List接口的类的实例或当作其他的实例来用。
至于Collection也就是第三种:
Collection a = new ArrayList();
和List a = new ArrayList();用法差不多,Collection也是接口,并且是接口List的父接口,两者在用法上没太大的区别。 |