可以在 Scala 中定义 sealed
类,它们基本上是 final
除非子类发生在同一个文件中。
JVM 似乎不允许final
类字节码和 它的子类。
考虑到字节码中没有源文件的“概念”,这个限制是如何实现的?
因此,javac
如何防止 Scala sealed
类在 Java 中被子类化?
最佳答案
该限制在编译时由 scalac 对 Scala 源代码强制执行。生成的二进制类定义没有设置 JVM 最终标志,因此,正如您现在可能已经猜到的那样,当针对 Scala 二进制文件编译 Java 源代码时,javac 不会强制执行密封限制。
关于java - 密封类是否在 Java 中强制执行,如果是,如何执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4460542/