java - 密封类是否在 Java 中强制执行,如果是,如何执行?

标签 java class scala interop sealed

可以在 Scala 中定义 sealed 类,它们基本上是 final 除非子类发生在同一个文件中。

JVM 似乎不允许final 类字节码 它的子类。

考虑到字节码中没有源文件的“概念”,这个限制是如何实现的?

因此,javac 如何防止 Scala sealed 类在 Java 中被子类化?

最佳答案

该限制在编译时由 scalac 对 Scala 源代码强制执行。生成的二进制类定义没有设置 JVM 最终标志,因此,正如您现在可能已经猜到的那样,当针对 Scala 二进制文件编译 Java 源代码时,javac 不会强制执行密封限制。

关于java - 密封类是否在 Java 中强制执行,如果是,如何执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4460542/

相关文章:

java - 如何迭代 TreeMap 并使用反射来获取子类名称?

java - 检查从 Play 中的模块导入的所有 URI 的权限

java - JPA 软删除存储库 + 审核

java - 根据类名测试类是否包含实例变量

javascript - 如何在没有 JQuery 的情况下获取一组 DIV ID

scala - 如何从Scala迭代器获取不同的项目,保持懒惰

scala - 如何转换 Spark 数据框以使我的值成为列名称?

java - 在java eclipse中在localhost上发布Web服务

c++ - 前向声明和类

java - scala.collections.javaconverters._ 错误 : value map is not a member of java. util.Set