最近遇到了不可变对象(immutable对象)的概念,我想知道控制对状态的访问的最佳实践。尽管我大脑中面向对象的部分让我想在看到公众成员时畏缩不前,但我认为这样的事情没有技术问题:
public class Foo {
public final int x;
public final int y;
public Foo( int x, int y) {
this.x = x;
this.y = y;
}
}
我会觉得将字段声明为 private
并为每个字段提供 getter 方法会更舒服,但是当状态显式只读时,这似乎过于复杂。
提供对不可变对象(immutable对象)状态的访问的最佳做法是什么?
最佳答案
这完全取决于您将如何使用该对象。公共(public)领域本质上并不是邪恶的,将所有内容默认为公共(public)领域是很糟糕的。例如 java.awt.Point 类将其 x 和 y 字段公开,它们甚至不是最终的。您的示例似乎很好地使用了公共(public)字段,但是您可能又不想公开另一个不可变对象(immutable对象)的所有内部字段。没有包罗万象的规则。
关于java - 可以公开不可变对象(immutable对象)的状态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21910769/