java之自动生成包装器以防止 "malicious downcast"

wayfarer 阅读:8 2024-06-20 12:54:19 评论:0

如果您在 Java 中实现了一个接口(interface),则没有什么可以阻止调用者查看您提供的具体实现,转换为该类并调用不在接口(interface)中的方法。我认为这被称为“恶意向下转换”。

防止这种情况的一种方法是创建一个包装器,该包装器仅具有接口(interface)的方法并且不公开它委托(delegate)的实现实例。如果没有对私有(private)变量的反射,您应该是安全的。

有没有办法自动创建这些类型的包装器(在运行时,不使用 IDE 中的代码创建向导,因为它仍然创建需要维护的源文件)?

请您参考如下方法:

另一种防止这种情况的方法是使用工厂类,并让实现成为工厂的私有(private)内部类。只有工厂可以看到它,并且它只会返回接口(interface)类型,因此没有具体的实现可以进行强制转换。


标签:java
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号