【发布时间】:2012-12-28 18:55:13
【问题描述】:
在我当前的项目中,我有一个将其实例存储在变量中的类。这个实例应该可以被项目中的所有其他类访问,但它只能被它自己的类改变。
我怎样才能做到这一点?
【问题讨论】:
-
“它的实例”是什么意思?该类只有一个实例吗? (单身)
-
是的,我就是这个意思。
标签: java class-variables
在我当前的项目中,我有一个将其实例存储在变量中的类。这个实例应该可以被项目中的所有其他类访问,但它只能被它自己的类改变。
我怎样才能做到这一点?
【问题讨论】:
标签: java class-variables
有人建议“私有领域的公共 getter 但没有公共 setter”。
注意:这仅在字段为原始类型时才有效。
如果是带setter的对象,内容还是可以修改的;因此不是只读的。
看到 Java 语言提供了一些结构来使返回类型成为只读而不需要进行深度复制/克隆,这将是一件很有趣的事情。
我想像 只读 getEmployee() { ...}
【讨论】:
简而言之就是所谓的immutable object,Object的状态在构造之后就不能改变了。
String 是不可变Class 的常见示例。
通过以下方式创建class immutable-
overridden - 使class final,或使用
static 工厂并保持构造函数私有。private 和final
no-argument constructor 与后续
调用setXXX 方法。setXXX 方法,而是任何可以改变的方法
状态【讨论】:
可以在很多地方找到用于实例化单例的样板代码,例如参见http://www.javacoffeebreak.com/articles/designpatterns/index.html
请注意,许多人认为单例是一种反模式,因为一旦您的应用程序中充斥着对单例的引用,就很难摆脱它。
【讨论】:
写一个public getter 但没有 public setter。还有字段本身private
【讨论】: