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>