在Scala中可以定义sealed
类,它们基本上与final
类相同,除非子类化发生在同一文件中。
似乎JVM不允许final
类的字节码及其子类存在。
考虑到字节码中没有源文件的"概念",这个限制如何实现?
因此,javac
如何阻止Java中的Scala sealed
类被子类化?
这个限制是由Scala编译器(scalac)在编译时强制执行的。由此产生的二进制类定义不会设置JVM的final标志,因此,当Java源代码针对Scala二进制文件进行编译时,javac不会强制执行sealed限制。
sealed
类(而不是是否可能在 Java 语言 中拥有类似sealed
类的东西),对吗? - T.J. Crowdersealed
类的字节码是否防止它在Java代码中被子类化。 - soc