【问题标题】:Sealed classes don't compile, Eclipse compiler bug?密封类不编译,Eclipse 编译器错误?
【发布时间】:2021-01-09 09:16:12
【问题描述】:

我在 Eclipse 2020-09 和 2020-12 有这两个课程:

A类

package test;

public sealed class A permits B { }

B类

package test;
import java.io.Serializable;

public final class B extends A implements Serializable  { }

但是,eclipse 编译器在 B 类中给了我一个编译器错误:

扩展密封类 Serializable 的类型 B 应该是允许的 可序列化的子类型

这看起来很奇怪,因为Serializable 甚至不是密封类。我在JEP-360 中一无所获。 删除“implements Serializable”可以解决该错误。

这是 Eclipse 编译器中的错误吗?

【问题讨论】:

  • 什么版本的 Eclipse?该区域的各种错误已在 2012 年 12 月标记为已修复
  • 是的,可能是这样,代码用 javac 编译得很好。请按照 greg 的要求提供版本。
  • @greg-449 现在是 2020-09。 2020-12我试过了,但是因为其他bug无法使用,
  • eclipse 2020-12 也有这个错误

标签: java eclipse java-15 java-sealed-type


【解决方案1】:

如果其他人正在阅读此内容:

我的bug report 已针对 Java 16 进行了修复。

【讨论】:

    【解决方案2】:

    我不知道 eclipse 是否完全支持这个(预览功能),但是您是否尝试过使用命令行编译器? (oracle 或 openjdk)

    我刚刚使用 Java 15.0.1 测试了该代码,它运行良好 -> 像 eclipse 这样的接缝仍然不完全支持它

    在另一台机器上使用 eclipse 2020-12 对其进行了测试(必须先启动)-相同的错误消息 [:-(

    很多可能是个bug

    【讨论】:

    • "你有没有尝试将 B 声明为 final..."...不是有问题的代码public final class B ...
    • 你说得对,不知怎的我之前没看到(?)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多