访问包私有方法的外部类

Jak*_*ake 13 java access-modifiers package-private

假设我的包中有一个类,org.jake它有一个默认访问的方法(没有修饰符).然后该方法仅在包内可见.

然而,当有人收到我的框架的jar时,是什么阻止他们编写一个新的类,声明它的包org.jake,并使用我所谓的隐形方法?

换句话说,有什么办法可以防止这种情况发生吗?

Jon*_*eet 16

你可以在你的jar文件中密封包.但它不是防弹的.

从安全的角度来看,最重要的是不依赖于访问修饰符等,真正开始.如果某人运行具有不受限制权限的代码,他们将能够访问各种事物.访问修饰符实际上只是帮助阻止人们意外地在脚中射击.

如果有人愿意在你的软件包中放置类来规避你的封装,那么他们显然无视你的最佳意图 - 我说让他们继续使用它,但不要为这种情况提供支持.


Asa*_*aph 6

你无能为力,以防止这种情况发生.甚至可以通过反思访问私人成员.您应该将java中的访问修饰符视为仅仅是提示性的.