のは、私は不変のデータを持ってJavaでFooクラスがあるとしましょう:のJava:不変クラスのための擬似setterメソッド
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の新しい値を持ちます。
class Foo
{
...
Foo setX(int newX) { return new Foo(newX, this.otherstuff); }
...
}
が、
setX()
のセマンティクスが変更可能なBeanオブジェクトの標準的なセッターの規則とは異なりますので、何とかこれは正しい感じていない:私は
setX()
それを呼び出すことができます。
このメソッドにはどのような名前が最適ですか?
withX()
またはnewX()
などとしますか?
編集:私の場合は、追加の優先順位:私は(JSR-223を通って、私はエクスポートするオブジェクトモデル)スクリプトクライアントを持って簡単にFoo
オブジェクトを取得することができます。しかし、コンストラクタの呼び出しやビルダーの作成などは面倒です。ですから、このメソッドをクライアントのスクリプト作成の便宜のために提供することが望ましいです。
関連する質問:http://stackoverflow.com/questions/521893/whats-the-best-name-for-a-non-mutating-add-method-on-だから、次のようになります不変のコレクション。 (これはこれと同じですが、 'setX'の代わりに' add'のためです。) – ruakh