java - List<String> stringList = new ArrayList<String>() 和 List<String> stringList = new ArrayList() 有什么区别?

标签 java arraylist

我知道下面的声明和初始化在java中都是可以的。

List<String> stringList = new ArrayList<String>() 

List<String> stringList = new ArrayList()?

但是它们之间到底有什么区别呢?

另外,您更喜欢如何命名列表变量?就像您更喜欢将它们命名为 variableList 还是仅命名为 variables?或者您还有其他方法吗?

最佳答案

确实没有区别,虽然第二个会给你一个编译警告。

它们编译成相同的字节码,因为编译器会丢弃有关您使用的类型参数的信息。

问题是 ArrayList类是在泛型之前发明的,所以我们过去总是必须将它创建为 new ArrayList() , 不指定类型参数。现在有了泛型,我们可以指定将什么类型的对象存储在 ArrayList 中。并让编译器检查我们是否正确使用它。这样做的符号是您在第一个示例中使用的符号。

但是编译器随后所做的任何检查都是基于变量的类型,而不是您所创建的类,因此除了最初的编译器警告之外,差异将完全没有影响。

从 Java 7 开始,首选的写法是 List<String> stringList = new ArrayList<>();但此表示法在早期版本的 Java 中不可用。

关于java - List<String> stringList = new ArrayList<String>() 和 List<String> stringList = new ArrayList() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22875993/

相关文章:

Java 正则表达式匹配,2 个简单的正则表达式问题

Java Spring MongoDB 存储库接口(interface)

java - 我无法弄清楚此错误消息(ArrayList BankAccount 代码)

java - ArrayList 与 LinkedList 的性能因机器而异?

java - 滑动时刷新 Android Viewpager fragment

java - 当内部有空格时,加拿大邮政编码验证失败

java - Arraylist 泛型/通配符礼仪

java - 从 arraylist<Object> 中删除重复的字符串

java - 如何获取 Android/Java 中调试输出的方法名称?

java - 是否可以从类型为 Class 的 ArrayList 中调用方法?