Java密封接口(interface)允许泛型类型: gradle complains, eclipse不允许

标签 java eclipse gradle ecj java-sealed-type

我有三种类型,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: '{' expectedpermits B<?> 的左括号位置。当我删除<?>时,这样类型定义如下(原始类型):

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

...然后 gradle 不会提示并且构建成功。这是 gradle bug 还是我使用的类型定义不允许?

最佳答案

根据Java Language Specification §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 .

关于Java密封接口(interface)允许泛型类型: gradle complains, eclipse不允许,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73443052/

相关文章:

java - Gradle Antlr插件失败无法使用Antlr 3.5.2初始化类org.antlr.tool.ErrorManager

java - 持久化新实体后,如何使用其父实体的信息填充实体中的字段

java - 从 jar 访问 bean 定义 xml 文件到 war 的主上下文文件

java - 将 CSS 添加到 JasperReports 的 HTML 导出

java - 从mysql中提取unicode文本到java

java - 无法解析类型 javax.validation.Payload。它是从所需的 .class 文件中间接引用的

java - 如何解决以 ImageIO 插件为原因的 OutOfMemoryError?

eclipse - Eclipse 中的内存

gradle - 对gradle关闭的怀疑

Gradle 构建在 jenkins :alpine container: UnsatisfiedLinkError: linux-amd64/libnative-platform. so : libstdc++. so.6 中失败: