List<String> list = new ArrayList<>()
这种形式实际上是一种向上转型(upcasting)的体现,ArrayList 实现了 List 接口,可以看成是从 List 继承而来,一个子类的对象可以指向它父类。
为什么不是 ArrayList<String> list = new ArrayList<>()
呢?
直接这样写没有问题,但是不够灵活,不推荐。因为 List 下除了 ArrayList 还有 LinkList 等他们都实现了List里面的方法。而声明成 List<String> list = new ArrayList<>()
的形式使得 list 这个对象可以有多种的存在形式。使用LinkedList,ArrayList或者Vector存储数据代码如下:
List<String> list = new LinkedList<String>();
List<String> list = new ArrayList<String>();
List<String> list = new Vector<String>();
这样就list对象就会更加灵活。
参考:List<String> 和 ArrayList<String>的区别 - 软测小生 - 博客园 (cnblogs.com)