你看我这个例子:
ArrayList<E>类是接口List<E>的一个实现类,根据面向接口的编程思想,非常建议采用第一组声明方式,看上去是声明了两个List接口,实则new出来的实例是ArrayList的实例。
第二组是直接声明ArrayList,new也用ArrayList来new,这是普通的声明方法,也没有什么问题,但是还是建议使用面向接口的思想来声明,以后学到设计模式的时候你就知道面向接口编程有多强大了。
补充一下,这里用到了泛型<E>,声明一个泛型的类时,如果左边已经指明了泛型的类型,右边使用new的时候,就可以直接使用钻石操作符<>就完事了,像我的例子里一样,java会自动推导出泛型的确切类型。