0

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

以下访问级别来自:http ://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

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

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

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

4

2 回答 2

7

访问控制修饰符 ( public, private, protected) 并不是一种安全工具,而是一种 OO 设计工具。它们用于实现 OO 模式,如封装、继承。

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

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

于 2012-09-21T10:07:53.070 回答
1

- Reflection似乎是evil这里,使用它可以访问任何variable带有private访问修饰符的内容。

-like Four access controls , private, default, protectedandpublic在 Java 中被引入更多是作为支持Core Object Oriented ConceptlikeInheritance等的工具Encapsulation...

于 2012-09-21T10:24:29.747 回答