首页 > 解决方案 > Java 泛型编译时错误和原始类型

问题描述

根据 jls8 doc,如果参数化类型格式不正确,则会出现编译时错误。根据 doc,

如果满足以下所有条件,则参数化类型 C 是良构的:

  • C 是泛型类型的名称。
  • 类型参数的数量与 C 的泛型声明中的类型参数的数量相同。
  • 当进行捕获转换(第 5.1.10 节)导致类型 C 时,每个类型参数 Xi 是
    Bi 中每个绑定类型 S 的 S[F1:=X1,...,Fn:=Xn] 的子类型。

如果参数化类型格式不正确,则会出现编译时错误。

但是根据第 2 点,原始类型的格式不是很好。为什么将变量声明为:

ArrayList array = new ArrayList();

标签: javagenerics

解决方案


JLS 8 Sec 4.5开始:

参数化类型是一种形式的类或接口类型 C<T1,...,Tn>...

原始类型没有 the<>或任何T参数。因此,它不是参数化类型,因此您引用的规则不适用。


推荐阅读