我们在一个类中有一个getter方法。 在同一个JAR中,我们希望可以使用无标识符访问级别从相同的包和子包访问该变量。
来自http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
的访问级别下方我们的问题是,我们如何阻止某人接受编译的.JAR,创建具有相同包命名空间定义的类,并能够通过getter访问我们的变量?
我们考虑过去除特定变量的所有getter,并在将引用传递给自己时将变量值赋给其他具有setter和构造函数的类。显然,他们将是最后的课程。这样,需要变量值的所有对象都有自己的私有副本。
我想知道是否有更好的方法?
答案 0 :(得分:7)
访问控制修饰符(public
,private
,protected
)不是安全工具,而是OO设计工具。它们用于实现封装,继承等OO模式。
即使没有任何getter和私有变量,任何Java开发人员都可以使用反射来访问变量。
如果你想保密,不要把它放在任何人执行的程序变量中。把它放在你自己的机器上。
答案 1 :(得分:1)
- Reflection
似乎是此处evil
,使用该variable
甚至可以访问private
访问修饰符。
- Four access controls
,例如private
,default
,protected
和public
在Java中作为工具引入支持Core Object Oriented Concept
,Inheritance
,Encapsulation
等... {/ p>