java没有任何泛型类型集的ArrayList意味着什么?
我注意到可以定义这样的变量,而不必指定它的泛型类型。 虽然这看起来像是在编译,但当我对更复杂的类进行编译时,我注意到了一些奇怪的问题,比如不再正确地提取方法签名。当我使用了一个替代方法,而不是仅仅省略泛型类型时,这些问题就消失了
下面的代码有什么实际用途吗?它与使用ArrayList<?>
有什么区别
Class Example {
private ArrayList list;
}
你可以在下面搜索框中键入要查询的问题!
我注意到可以定义这样的变量,而不必指定它的泛型类型。 虽然这看起来像是在编译,但当我对更复杂的类进行编译时,我注意到了一些奇怪的问题,比如不再正确地提取方法签名。当我使用了一个替代方法,而不是仅仅省略泛型类型时,这些问题就消失了
下面的代码有什么实际用途吗?它与使用ArrayList<?>
有什么区别
Class Example {
private ArrayList list;
}
# 1 楼答案
这是允许向后兼容的,在Java5之前不存在泛型,当他们添加泛型时,他们不想破坏现有代码
大多数编译器/IDE都会给您一个警告,但从概念上讲,这与执行
ArrayList<Object>
相同# 2 楼答案
出于与前泛型Java版本(即<;5)兼容的原因,维护原始类型集合
除非存在兼容性问题,否则不鼓励使用它们
非泛型
ArrayList
类似于没有任何类型安全性的ArrayList<Object>
由于类型擦除,方法签名不会保留参数化的泛型类型,因此在重载方法时,这通常会引起混淆
# 3 楼答案
泛型类可以有多个类型参数
在这里查看更多信息和示例
http://docs.oracle.com/javase/tutorial/java/generics/types.html