访问包私有方法的外部类
2022-09-04 08:11:00
假设我的包中有一个类,它有一个具有默认访问权限的方法(没有修饰符)。然后,该方法仅在包中可见。org.jake
但是,当有人收到我的框架的jar时,有什么可以阻止他们编写新类,将其包声明为,并使用我所谓的不可见方法?org.jake
换句话说,我能做些什么来防止这种情况吗?
假设我的包中有一个类,它有一个具有默认访问权限的方法(没有修饰符)。然后,该方法仅在包中可见。org.jake
但是,当有人收到我的框架的jar时,有什么可以阻止他们编写新类,将其包声明为,并使用我所谓的不可见方法?org.jake
换句话说,我能做些什么来防止这种情况吗?
您可以将包密封在 jar 文件中。虽然它不是防弹的。
最主要的是,从安全的角度来看,不要依赖访问修饰符等,真的。如果有人使用不受限制的权限运行代码,他们将可以访问各种内容。访问修饰符实际上只是帮助阻止人们意外地向自己开枪。
如果有人愿意在你的包中放置类来规避你的封装,他们显然忽略了你最好的意图 - 我说让他们继续这样做,但不要为这种情况提供支持。
您无法采取任何措施来防止这种情况。即使是私人成员也可以通过反射访问。您应该将java中的访问修饰符视为仅仅是暗示性的。