保护jar中的内部类变量

时间:2012-09-21 10:03:49

标签: java jar namespaces

我们在一个类中有一个getter方法。 在同一个JAR中,我们希望可以使用无标识符访问级别从相同的包和子包访问该变量。

来自http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

的访问级别下方

我们的问题是,我们如何阻止某人接受编译的.JAR,创建具有相同包命名空间定义的类,并能够通过getter访问我们的变量?

我们考虑过去除特定变量的所有getter,并在将引用传递给自己时将变量值赋给其他具有setter和构造函数的类。显然,他们将是最后的课程。这样,需要变量值的所有对象都有自己的私有副本。

我想知道是否有更好的方法?

2 个答案:

答案 0 :(得分:7)

访问控制修饰符(publicprivateprotected)不是安全工具,而是OO设计工具。它们用于实现封装,继承等OO模式。

即使没有任何getter和私有变量,任何Java开发人员都可以使用反射来访问变量。

如果你想保密,不要把它放在任何人执行的程序变量中。把它放在你自己的机器上。

答案 1 :(得分:1)

- Reflection似乎是此处evil,使用该variable甚至可以访问private访问修饰符。

- Four access controls,例如privatedefaultprotectedpublic在Java中作为工具引入支持Core Object Oriented ConceptInheritanceEncapsulation等... {/ p>