Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 在未指定对象类型的情况下创建ArrayList时,是否会在添加第一个对象时自动创建它?_Java_Arrays_Object_Types_Arraylist - Fatal编程技术网

Java 在未指定对象类型的情况下创建ArrayList时,是否会在添加第一个对象时自动创建它?

Java 在未指定对象类型的情况下创建ArrayList时,是否会在添加第一个对象时自动创建它?,java,arrays,object,types,arraylist,Java,Arrays,Object,Types,Arraylist,比如说,不做 ArrayList<ClassName> variableName; 然后再添加一个“ClassName”类型的对象 这会自动将数组的类型设置为 ArrayList<ClassName> ArrayList ?否。泛型仅用于编译时。你正在失去那张支票的好处。在运行时,所有通用信息都会被删除 换句话说, ArrayList<Type> ArrayList 在运行时,它只是一个ArrayList。在列表上这样做的好处是,当您编写代码时,编

比如说,不做

ArrayList<ClassName> variableName;
然后再添加一个“ClassName”类型的对象

这会自动将数组的类型设置为

ArrayList<ClassName>
ArrayList

否。泛型仅用于编译时。你正在失去那张支票的好处。在运行时,所有通用信息都会被删除

换句话说,

ArrayList<Type> 
ArrayList

在运行时,它只是一个ArrayList。在列表上这样做的好处是,当您编写代码时,编译器将检查您是否在列表中添加了任何不合适的内容。

如果您不指定,则与指定ArrayList相同,这意味着任何类型的对象都可以添加到ArrayList中。指定类时执行的类型检查发生在编译时,而不是运行时,因此不可能按照您建议的方式工作(在运行时确定更具体的类)。

真正的类型是
ArrayList
ArrayList
类型仅为编译器存在(这称为擦除),其目的是在编译器级别提供类型安全性。但是在字节码级别,您不具备泛型类型的知识

请看,我会说ArrayList在语义上意味着“此列表包含潜在任何类型的对象”,而ArrayList意味着“这是遗留代码,或者我没有费心向编译器指定此列表元素的类型”。ninjalj:那么您将如何称呼ArrayList?我会称之为“此列表包含潜在任何类型的对象”,而ArrayList则是“此列表包含对象”。。
ArrayList<ClassName>
ArrayList<Type>