Java:不可变类的伪 setter 方法
假设我在Java中有一个类Foo,它具有不可变的数据:
class Foo {
final private int x;
public int getX() { return this.x; }
final private OtherStuff otherstuff;
public Foo(int x, OtherStuff otherstuff) {
this.x = x;
this.otherstuff = otherstuff;
}
// lots of other stuff...
}
现在,我想添加一个实用程序方法,该方法创建一个具有相同状态但具有新值 x 的“同级”值。我可以称之为:setX()
class Foo
{
...
Foo setX(int newX) { return new Foo(newX, this.otherstuff); }
...
}
但是 的语义与可变 Bean 对象的标准 setter 约定不同,所以不知何故,这感觉不对。setX()
此方法的最佳名称是什么?
我应该叫它还是别的什么?withX()
newX()
编辑:在我的情况下,额外的优先级:我有脚本客户端(通过JSR-223和我导出的对象模型),可以轻松获取对象。但是,调用构造函数或创建生成器或其他任何东西都很麻烦。因此,我希望提供此方法以方便编写客户端脚本。Foo