带有和不带参数的Java Generics List和ArrayList

1 java generics arraylist

我正在阅读Java Generics.我想问下列陈述之间有什么区别.

1: List<String> list = new ArrayList(3);

2: List<String> list = new ArrayList<String>(2);

3: List<String> list = new ArrayList<String>();

4a:List<String> list = new ArrayList("A");//为什么我不能使用String?

4b:List<String> list = new ArrayList('a');//但是char工作正常.

我正在阅读关于泛型的Java Docs,之后我需要问上面的问题,因为我没有得到确切的答案.(可能是因为英语不好)

Era*_*ran 6

这与泛型无关.ArrayList有一个构造函数,它接受一个int,表示List的初始容量.A char('a')可以转换为int,这就是为什么4b就像1和2一样工作.没有构造函数接受a String,所以4a不通过编译.

编辑:

使用原始类型(即没有类型参数,例如List<String> list = new ArrayList(3))实例化类是您不应该做的事情,因为它不太类型安全,并且仅允许向后兼容.