我目前正在学习Java OCA考试,并遇到了一个与ArrayList声明相关的问题。
根据我的书,答案1、2和4是有效的。答案3和5无效。然而,并没有给出充分的解释。它只展示了声明一个ArrayList的标准方式。Which of the following is valid?:
1. ArrayList al1 = new ArrayList(); 2. ArrayList al2 = new ArrayList<>(); 3. ArrayList<> al3 = new ArrayList<>(); 4. ArrayList<Double> al4 = new ArrayList<>(); 5. ArrayList<Double> al5 = new ArrayList<Float>();
ArrayList<E> al3 = new ArrayList<E>();
它提到,声明ArrayList时不带泛型部分也是有效的。
我也无法在网上找到一篇有关此主题的好文章。是否有人能解释一下或指向一篇好文章,介绍上述不同的排列组合方式?
先感谢您的帮助。
<>
被称为diamond operator
,并在Java7
中引入。它是实例化泛型对象的快捷方式,因此当使用new
时不必再次指定类型,因为它已经在变量声明中指定了。 - A4LArrayList<Type> l = new ArrayList<>()
只是ArrayList<Type> l = new ArrayList<Type>()
的简写形式。这是唯一有效的空角情况。在之前的Java版本中,空角是无效的,类型应该是一致的(Double和Float是不一致的)。你应该看一下旧语法,那更加清晰明了。 - shuangwhywhy