阿里Java开发手册剖析:
-
6.5【强制】ArrayList 的 subList 结果不可强转成 ArrayList,否则会抛出 ClassCastException
-
6.8【强制】在subList场景中,高度注意对父集合元素的增加或删除,均会导致子列表的遍历、增加、删除产生 ConcurrentModificationException
-
6.9【强制】使用集合转数组的方法,必须使用集合的 toArray(T[] array),传入的是类型完全一致、长度为 0 的空数组。
-
6.11【强制】使用工具类 Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法, 它的 add/remove
-
6.14【强制】不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator方式
-
6.16【推荐】集合泛型定义时,在 JDK7 及以上,使用 diamond 语法或全省略。 说明:菱形泛型,即 diamond,直接使用<>来指代前边已经指定的类型。
【推荐】集合泛型定义时,在 JDK7 及以上,使用 diamond 语法或全省略。 说明:菱形泛型,即 diamond,直接使用<>来指代前边已经指定的类型。
JDK7之前版本,创建泛型集合类时,需要在对象声明和创建时都明确写上泛型。如下:
HashMap<String,Person> persons=new HashMap<String,Person>();
但是JDK7 及以上类型创建时是可以只用<>标识即可,如下:
HashMap<String,Person> persons=new HashMap<>();
其实即使你写了编译器也会提示你去除:
不过,文档上建议的全省略,个人不建议。因为你这样写编译器会有提示。且个人觉得加上<>阅读时也知道此次是有泛型的,更标注: