在未指定对象类型的情况下创建 ArrayList 时,它是否会在添加第一个对象时自动创建它?
例如,而不是做
ArrayList<ClassName> variableName;
是吗
ArrayList variableName;
然后添加一个“类名”类型的对象
variableName.add(objectName);
会自动将数组的类型设置为
ArrayList<ClassName>
?
例如,而不是做
ArrayList<ClassName> variableName;
是吗
ArrayList variableName;
然后添加一个“类名”类型的对象
variableName.add(objectName);
会自动将数组的类型设置为
ArrayList<ClassName>
?
不。泛型仅用于编译时。您只是失去了该检查的好处。在运行时,将擦除所有通用信息
换句话说,
ArrayList<Type>
在运行时只是一个 ArrayList。仅对列表执行此操作的好处是,当您编写代码时,编译器将检查您是否在列表中放置了任何不适当的内容。
如果不指定,则与指定 ArrayList<Object> 相同,这意味着任何类型的对象都可以添加到 ArrayList 中。在指定类时执行的类型检查发生在编译时,而不是在运行时,因此事情不可能按照您建议的方式工作(在运行时确定它们更具体的类)。