Java密封接口允许泛型类型:Gradle抱怨,Eclipse不

cwxwcias  于 2022-11-04  发布在  Eclipse
关注(0)|答案(1)|浏览(207)

我有三种类型,ABC,它们的定义如下:

  1. public sealed interface A extends Comparable<A> permits B<?>, C { ...
  2. public non-sealed interface B<T> extends A { ...
  3. public record C(String s, int i) implements A { ...

在Eclipse中一切都能正常编译和运行。现在,当我运行gradle构建时,我在permits B<?>的左括号处得到一个错误error: '{' expected。当我删除<?>时,类型定义如下所示(原始类型):

  1. public sealed interface A extends Comparable<A> permits B, C { ...

...那么gradle没有抱怨,并且构建成功。这是gradle错误还是我使用的类型定义不被允许?

oknrviil

oknrviil1#

根据Java语言规范§8.1.6,permits类型列表中的项必须没有它们的类型参数。
因此,permits B<?>不正确,必须将更正为permits B
请确定permits B<?>不会给予编译错误,而permits B<?>会产生B is a raw type. References to generic type B<T> should be parameterized警告,has been reported to Eclipse JDT

相关问题