java - new ArrayList<String>() 和 new ArrayList() 之间的区别

标签 java generics

这两个声明有什么区别?

new ArrayList<String>();
new ArrayList();

它们有效,但第二个返回警告。我不明白为什么。

我了解 ArrayList<String> arr 之间的区别和ArrayList arr ,第一个启用类型检查控制。但是new ArrayList<String>()呢?和new ArrayList() ?执行层面有什么区别吗?在控制方面我会失去什么?

最佳答案

在 Java 7 中,它可以自动检测类型,但您需要使用 Diamond Operator :

ArrayList<String> arr = new ArrayList<>();

它基本上是第一行的语法糖。如果没有菱形运算符,它是原始类型(非参数化泛型类型)。原始类型的存在是为了与不支持泛型的旧 Java 版本兼容,但在使用时会导致警告。

关于java - new ArrayList<String>() 和 new ArrayList() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37211213/

相关文章:

java - simpleJdbcTemplate 多行获取

java - 在方法中返回数组

Java比较器将大学生的学生ID从最低数字到最高数字排序

java - 将文件从 Struts/JSP 上传到数据库中的 PostgreSQL 大对象 ("lo"/"oid")

c# - 使用 C# 泛型从方法创建泛型对象(不是 "new")

java - C3P0:生产中未返回的连接超时?

vb.net - 检查两个列表是否至少有一个共同项

c# - XmlSerializer 需要 XmlInclude 用于具有通用约束的公共(public)方法,如果在另一个程序集中键入并且要求该类型是可序列化的!

java - List<List<String>> 是 Collection<Collection<T>> 的实例吗?

C# 派生类型到泛型列表作为参数