在我当前的项目中,我有一个类,它将Instance存储在一个变量中。该实例应该可以被项目中的所有其他类访问,但它只能由自己的类更改。
我怎样才能做到这一点?
答案 0 :(得分:18)
写一个public
getter但没有 public
setter。字段本身private
答案 1 :(得分:4)
简称为immutable object
,Object
的状态在构造后不会改变。
String
是不可变Class
的常见示例。
按照 -
制作class
immutable
overridden
- 制作class
final
,或使用
static
工厂并将构造函数保密。private
和final
no-argument constructor
结合后续
调用setXXX
方法。setXXX
方法,而是任何可以改变的方法
状态答案 2 :(得分:2)
有人建议“公众吸气,但没有私人领域的公共制定者”。
警告:仅当字段为基本类型时才会起作用 如果它是具有setter的对象,则仍然可以修改内容;因此不是只读的。
有趣的是,Java语言提供了一些构造,使返回类型成为只读,而无需进行深度复制/克隆。
我的影像像 ReadOnly getEmployee(){ ...}
答案 3 :(得分:0)
可以在很多地方找到用于实例化单例的样板代码,例如参见http://www.javacoffeebreak.com/articles/designpatterns/index.html
请注意,许多人认为单例是一个反模式,因为一旦你的应用程序充斥着对单例的引用,就很难摆脱它。