类变量:公共访问只读,但私有访问r / w

时间:2013-01-14 19:00:25

标签: java class-variables

在我当前的项目中,我有一个类,它将Instance存储在一个变量中。该实例应该可以被项目中的所有其他类访问,但它只能由自己的类更改。

我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:18)

写一个public getter但没有 public setter。字段本身private

答案 1 :(得分:4)

简称为immutable objectObject的状态在构造后不会改变。

String是不可变Class的常见示例。

按照 -

制作class immutable
  • 确保课程不能overridden - 制作class final,或使用 static工厂并将构造函数保密。
  • 制作字段privatefinal
  • 强制调用者在一个步骤中完全构造一个对象, 而不是使用no-argument constructor结合后续 调用setXXX方法。
  • 不提供任何可以改变对象状态的方法 以任何方式 - 不只是setXXX方法,而是任何可以改变的方法 状态
  • 如果类有任何可变对象字段,那么它们必须是 在课程与其来电者之间传递时进行防御性复制。

答案 2 :(得分:2)

有人建议“公众吸气,但没有私人领域的公共制定者”。

警告:仅当字段为基本类型时才会起作用 如果它是具有setter的对象,则仍然可以修改内容;因此不是只读的。

有趣的是,Java语言提供了一些构造,使返回类型成为只读,而无需进行深度复制/克隆。

我的影像像 ReadOnly getEmployee(){   ...}

答案 3 :(得分:0)

可以在很多地方找到用于实例化单例的样板代码,例如参见http://www.javacoffeebreak.com/articles/designpatterns/index.html

请注意,许多人认为单例是一个反模式,因为一旦你的应用程序充斥着对单例的引用,就很难摆脱它。