标题几乎说明了一切。 如果我提供一个库并且有人使用它,他可以编写类并将它们添加到我的库定义的包中。然而,这会引起安全问题,因为这意味着他可以访问库中没有访问修饰符定义的方法。
是否有解决方案禁止用户向现有包添加类?
最佳答案
是的(但是)。 sealed
list 属性将密封包,防止包含其他来源的类。 (technote)
虽然这有点取决于上下文。如果使用它的人首先使用库 jar 文件,那么游戏就结束了。
如果库和客户端代码都由同一个类加载器加载,那么通常会出现问题,尽管使用不同签名签名的类不能在同一包中共存。即使存在父子关系,如果使用不同的类加载器,那么在运行时,不同类加载器加载的同名包是不同的包。
对于 Java PlugIn 和 Java WebStart,Trusted-Library
list 条目会导致 jar 滑入父类加载器,从而保护它免受潜在不受信任的应用程序代码的影响。
关于Java:是否可以关闭包(限制向其中添加类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23843780/