有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java没有任何泛型类型集的ArrayList意味着什么?

我注意到可以定义这样的变量,而不必指定它的泛型类型。 虽然这看起来像是在编译,但当我对更复杂的类进行编译时,我注意到了一些奇怪的问题,比如不再正确地提取方法签名。当我使用了一个替代方法,而不是仅仅省略泛型类型时,这些问题就消失了

下面的代码有什么实际用途吗?它与使用ArrayList<?>有什么区别

Class Example {
  private ArrayList list;
}

共 (3) 个答案

  1. # 1 楼答案

    这是允许向后兼容的,在Java5之前不存在泛型,当他们添加泛型时,他们不想破坏现有代码

    大多数编译器/IDE都会给您一个警告,但从概念上讲,这与执行ArrayList<Object>相同

  2. # 2 楼答案

    出于与前泛型Java版本(即<;5)兼容的原因,维护原始类型集合

    除非存在兼容性问题,否则不鼓励使用它们

    非泛型ArrayList类似于没有任何类型安全性的ArrayList<Object>

    由于类型擦除,方法签名不会保留参数化的泛型类型,因此在重载方法时,这通常会引起混淆