java 7中的菱形运算符允许以下代码:
List<String> list = new LinkedList<>();
Run Code Online (Sandbox Code Playgroud)
但是在Java 5/6中,我可以简单地写:
List<String> list = new LinkedList();
Run Code Online (Sandbox Code Playgroud)
我对类型擦除的理解是这些完全相同.(无论如何,通用都会在运行时删除).
为什么要钻石头呢?它允许哪些新功能/类型安全?如果它没有产生任何新功能,为什么他们将其作为功能提及?我对这个概念的理解是否有缺陷?
任何人都可以解释以下ArrayList存储声明的区别String.
List type1 = new ArrayList();
List type2 = new ArrayList<String>();
List<String> type3 = new ArrayList<String>();
ArrayList<String> type4 = new ArrayList<String>();
List<String> type5 = null;
ArrayList<String> type6 = null;
Run Code Online (Sandbox Code Playgroud)
那么上面哪个声明是声明ArrayListString的最佳做法,为什么?