我们在一个类中有一个getter方法。
在同一个JAR中,我们希望可以使用相同的包和子包中的no-identifier访问级别访问该变量。
在以下访问级别之下:http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
我们的问题是,如何阻止某人获取已编译的.JAR,创建具有相同程序包名称空间定义的类,并能够通过getter访问我们的变量?
我们考虑过要删除特定变量的所有getter,并在它们向自己传递引用时,将这些变量的值提供给具有setter和构造函数的其他类。显然,它们将是最后的课程。这样,所有需要变量值的对象都有自己的私有副本。
我想知道是否有更好的方法?
最佳答案
访问控制修饰符(public
,private
,protected
)不是安全工具,而是OO设计工具。它们用于实现OO模式,例如封装,继承。
即使没有getter和私有变量,任何Java开发人员都可以使用反射来访问变量。
如果要保守秘密,切勿将其放在任何人执行的程序的变量中。将其保存在自己的计算机上。