我们在类中有一个 getter 方法。 在同一个 JAR 中,我们希望可以通过无标识符访问级别从同一包和子包访问该变量。
低于以下访问级别:http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
我们的问题是,如何阻止某人获取已编译的 .JAR、创建具有相同包命名空间定义的类以及能够通过 getter 访问我们的变量?
我们考虑摆脱特定变量的所有 getter,并在其他类传递对自身的引用时,将变量值赋予具有 setter 和构造函数的其他类。显然,他们将是最后一课。这样,所有需要变量值的对象都有自己的私有(private)副本。
我想知道是否有更好的方法?
最佳答案
访问控制修饰符(public
、private
、protected
)并不是作为安全工具,而是作为 OO 设计工具。它们用于实现 OO 模式,例如封装、继承。
即使没有任何 getter 和私有(private)变量,任何 Java 开发人员都可以使用反射来访问该变量。
如果您想保守某些 secret ,请不要将其放入任何人执行的程序的变量中。将其保留在您自己的计算机上。
关于java - 保护jar中的内部类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12528390/