Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 菱形算子阵列列表_Java_Arraylist - Fatal编程技术网

Java 菱形算子阵列列表

Java 菱形算子阵列列表,java,arraylist,Java,Arraylist,两者的区别是什么 ArrayList<Integer> list = new ArrayList<>(); ArrayList list=new ArrayList(); 及 ArrayList list=new ArrayList(); 创建新的ArrayList时是否需要菱形运算符?Java的一个相当高级的主题是泛型,这是对所有符号的解释 本质上,你应该一直写作 ArrayList<Integer> list = new ArrayList<&

两者的区别是什么

ArrayList<Integer> list = new ArrayList<>();
ArrayList list=new ArrayList();

ArrayList list=new ArrayList();

创建新的ArrayList时是否需要菱形运算符?

Java的一个相当高级的主题是泛型,这是对所有符号的解释

本质上,你应该一直写作

ArrayList<Integer> list = new ArrayList<>();
ArrayList list=new ArrayList();
因为它是

ArrayList<Integer> list = new ArrayList<Integer>();
ArrayList list=new ArrayList();
您需要两个类型参数(位)来匹配,否则编译器将给您一个警告

写作:

ArrayList<Integer> list = new ArrayList();
ArrayList list=new ArrayList();
创建可以保存任何类型的ArrayList,当您尝试将其转换为
ArrayList
时,编译器将抛出警告

编辑:

下面是关于泛型的用途和工作方式的深入指南。我不确定你是否有能力完全理解它们,但值得一试


首先是
ArrayList
的参数化泛型对象,由参数化泛型引用引用

第二个是
ArrayList
的非参数化非泛型对象,由参数化泛型引用引用


否,尽管创建
ArrayList
时不需要菱形运算符,但强烈建议以后避免
ClassCastException
或其他一些
运行时异常。第二个生成编译警告

Diamond iperator是在Java1.7中引入的。从Java1.5开始,您必须编写

ArrayList<Integer> list = new ArrayList<Integer>();
甚至

Collection<Integer> list = new ArrayList<>();
Collection list=new ArrayList();
甚至经常

Iterable<Integer> list = new ArrayList<>();
Iterable list=new ArrayList();

答案非常翔实,但请您解释一下或提供链接阅读此语句:
请避免在作业和方法定义的左侧使用具体类。下面是更好的:…
请解释原因,谢谢
Collection<Integer> list = new ArrayList<>();
Iterable<Integer> list = new ArrayList<>();