Java:ArrayList初始化(2个代码行之间的差异)

Pop*_*oko 2 java arraylist

我希望我的问题不会听起来很愚蠢,但我想知道这两行之间的区别是什么:

(假设我创建了一个名为Cow的课程.)

ArrayList<Cow> c1 = new ArrayList<Cow>();

ArrayList<Cow> c2 = new ArrayList();
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的解释.

rua*_*akh 7

目前,由于类型擦除,基本上没有区别.第一种形式是首选; 第二种形式使用原始类型,仅支持与旧版Java的向后兼容.如果您使用它,一个好的编译器会给你警告.

由于Java语言规范,第三版,§4.8解释说:

原始类型的使用仅允许作为遗留代码兼容性的让步.强烈建议不要在将通用性引入Java编程语言之后编写的代码中使用原始类型.未来版本的Java编程语言可能会禁止使用原始类型.

(重点是原创).