gpt4 book ai didi

java - 不同包中的两个类如何隔离它们?

转载 作者:行者123 更新时间:2023-11-29 06:10:47 25 4
gpt4 key购买 nike

我们必须开发一款游戏,用户可以在其中上传代码,例如剪刀石头布。他们必须从接口(interface)类中实现一些方法,我们在游戏类中调用它们,没什么特别的。

用户的代码在包中,我们没有名称冲突,
但主题是:我们如何确保用户 A 不调用用户 B 类中的方法?

最佳答案

一种方法是在不同的类加载器中加载这两个类。为了完全安全,您还需要在安全沙箱中运行这些类,该沙箱会停止反射和其他可能绕过类加载器障碍的机制。


其实我觉得这里面可能有漏洞。如果两个“玩家”类实现相同的接口(interface),它们可以多态地调用共享接口(interface)中定义的方法。它们被加载到不同的类加载器中,因此不能使用彼此的类型这一事实并不能阻止这一点。

因此,您实际上是在依靠阻塞反射(和良好的编程)来防止一个类/对象搜索出另一个类/对象的实例。阻塞反射还可以防止一个类破坏另一个类的封装,或调用未在公共(public)父类(super class)或共享接口(interface)中定义的方法。

关于java - 不同包中的两个类如何隔离它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6939345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com