我有三种类型,A、B和C,定义如下:
public sealed interface A extends Comparable<A> permits B<?>, C { ...
public non-sealed interface B<T> extends A { ...
public record C(String s, int i) implements A { ...在Eclipse中,一切都很好地编译和工作。现在,当我运行一个gradle构建时,在error: '{' expected的起始括号位置得到一个错误的permits B<?>。删除<?>时,类型定义如下(原始类型):
public sealed interface A extends Comparable<A> permits B, C { ......then gradle没有抱怨,而且构建是成功的。这是一个gradle错误,还是不允许我使用的类型定义?
发布于 2022-08-22 09:58:13
根据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警告,已向Eclipse报告。
https://stackoverflow.com/questions/73443052
复制相似问题