繁体   English   中英

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

[英]Are sealed classes enforced in Java and, if yes, how?

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

似乎JVM不允许final类字节码及其子类。

考虑到字节码中没有源文件的“概念”,如何强制执行此限制?

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

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

如何为您想要密封的类使用私有构造函数,然后创建扩展该类的公共最终静态内部类。 然后在编译时获得一组固定的子类,无法进一步扩展。 具有私有构造函数的基类随后作为到达这些内部类的路径,但本身不可能在其他地方扩展和实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM