Java 5 引入了泛型,这是一次重大的改进,从此集合中的东西不需要每次显式的去转型。不过 Java 5 还不具备类型推断的能力,所以声明泛型必须写成
List<String> list = new ArrayList<String>();
一直到 Java 6 也是如此。自 Java 7 起泛型增强为可根据声明类型进行推断,所以 Java 7 中可以这么写
List<String> list = new ArrayList<>(); //<> 中的参数可省略,如果类型参数多, 或多层嵌套时很省事
或
List<String> list = Collections.emptyList(); //见 Java 泛型 -- 依据声明的变量类型自动推断
Java 8 开始对泛型类型推断又进一步增强:可根据方法上下文进行推断,例如下面的代码在 Java 7 下编译不过