0

Javaでは、メソッドに(参照ではなく)値で返すように強制できますか?

例えば:

public Rect getBounds() {
    return bounds; //TODO: Return bounds by value so users can't change edit it.
}

ここでは、境界を公開したほうがよいでしょう。参照によって渡される場合に何かを返す関数を作成する理由はないようです。

私の他のオプションは、境界の特定のメンバーを1行1列で返すいくつかのメソッドを作成することですが、そうではありません。

4

2 に答える 2

5

いいえ。これが、APIが防御コピー変更不可能なラッパーなどを返すことが多い理由です。

これらのコピーやラッパー(ヘルプ)は、ユーザーがインスタンスデータを変更できないようにします。

正しい動作がインスタンスデータを完全かつ唯一の制御を持つインスタンスに依存している場合、インスタンスは、そのコントラクトを破るために使用できるものをクライアントに提供しないことにより、その動作を保証する責任があります。

于 2012-09-09T02:59:31.640 に答える
3

フィールドをfinalにし、コンストラクターで値を割り当て、 setterRectメソッドを作成しないことで、不変にします。不変オブジェクトには多くの利点があり、スレッドセーフもその1つです。

于 2012-09-09T03:04:26.057 に答える