常见的语句: List <String > list = new ArrayList(); 而不是写成: ArrayList<String> list = new ArrayList(); ???????? List是接口, ArrayList是JDK里提供的一个实现类。 编译时类型是List,运行时类型是ArrayList, 而List接口的实现类不只有ArrayList一个, 用一个List类型的引用这是“面向接口编程”, 主要是尽量面向接口编程。 常会用到很多不是我们写的类,我们叫第三方类库, 在类库里面很可能会返回一个这样的列表,但是他未必会返给你一个ArrayList, 没准是人家自己写的一个实现类都说不准,那么我们面向接口编程, 不需要了解是什么实现类,我们都把它们当List接收过来就好了, 我们就当成List来用。提高程序的透明性,让底层的实现对上层使用者封装。 List <String > list = new ArrayList(); 这是把ArrayList()向上转型为List,这时假的lst不能用ArrayList中新增的方法(即不是List接口的方法),如get() ArrayList <String > list = new ArrayList(); 如果我们在知道要创建一个ArrayList()的话,用这个方式创建就可以使用ArrayList里面的全部方法