我们在一个类中有一个getter方法。在同一个JAR中,我们希望变量可以从相同的包和子包中以无标识符访问级别进行访问。
来自:http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html的访问级别以下
我们的问题是,如何阻止某人使用已编译的.JAR,创建具有相同包命名空间定义的类,并能够通过getter访问我们的变量?
我们考虑去掉特定变量的所有getter方法,并在其他类传递对自身的引用时,使用setter和构造函数将变量值赋给这些类。显然,它们将是最终的课程。这样,所有需要变量值的对象都有自己的私有副本。
我想知道有没有更好的方法?
发布于 2012-09-21 18:07:53
访问控制修饰符(public
、private
、protected
)不是作为一种安全工具,而是一种面向对象的设计工具。它们用于实现OO模式,如封装、继承。
即使没有任何getter和私有变量,任何Java开发人员都可以使用反射来访问变量。
如果你想保密,千万不要把它放在任何人执行的程序的变量中。把它放在你们自己的机器上。
发布于 2012-09-21 18:24:30
- Reflection
似乎就是这里的evil
,使用它可以访问任何variable
,甚至可以使用private
访问修饰符。
- Four access controls
,如private
、default
、protected
和public
是在Java more中引入的,作为支持Core Object Oriented Concept
的工具,如Inheritance
、Encapsulation
等。
https://stackoverflow.com/questions/12528390
复制相似问题