我知道下面的声明和初始化在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/