誰でも簡単な例でJavaの可変オブジェクトと不変オブジェクトの違いを教えてもらえますか?Javaの可変オブジェクトと不変オブジェクト
答えて
変更可能オブジェクトは、状態を変更できるオブジェクトです。
Javaで状態がデータフィールド
を用いて実施される可変オブジェクトの例
class Counter {
private int i = 0;
public void increase() {
i++;
}
}
だからi
ここでクラスCounter
の内部状態を表しています。一方
Counter counter = new Counter();
counter.increase(); // somewhere in the code
: 不変オブジェクトは、その状態オブジェクトが作成されると、初期化/変更することはできませんオブジェクトです時間が経つにつれて、それは変更することができます。
これらのオブジェクトには、「ミュータレータ」 - セッタ、または内部状態を変更する一般的なメソッドを使用しないでください。このクラスは、(フィールドname
とage
中)の状態を維持するものの、 そのオブジェクトが作成された後、この状態を変更することは不可能( -
public final class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
}
ご覧のとおり:ここでは
は不変オブジェクトの例です。コンストラクタはホープこれは、私は多くのリソースが利用可能でそこにいると確信している
Personを本当に不変にするには、悪質な/愚かなユーザーを防ぐために、クラスをfinalにする必要がありますそれを拡張し、変更可能なデータ/ビヘイビアを追加するか、既存のメソッドの1つをオーバーライドして基礎となるオブジェクトを変更することができます。 – sisyphus
あなたが正しいですね。私はコードを変更しています –
- 1. Javaの可変オブジェクトへの不変参照の返却
- 2. Javaの不変オブジェクトとデータへのアクセス
- 3. 可変Javaクラスで不変オブジェクトを定義する方法は?
- 4. リポジトリと不変オブジェクト?
- 5. "オブジェクト"と "Javaのオブジェクト変数"
- 6. 不変オブジェクトと実効不変オブジェクトの違いは?
- 7. Javaで可変オブジェクトをシリアライズ
- 8. .NET不変オブジェクト
- 9. 不変オブジェクトのスレッドセーフ
- 10. 不変値オブジェクトとJPA
- 11. Java Set内のオブジェクトの可変フィールド
- 12. Webglのズーム不変オブジェクト
- 13. 不変オブジェクト間のイベントハンドリング
- 14. は不変オブジェクトのキーと値のペア
- 15. 不変式のキーとオブジェクトのペアPython
- 16. 可変オブジェクト参照による可変オブジェクト
- 17. jQueryオブジェクトへの可変スコープアクセス
- 18. 可変オブジェクトの自動プロパティ
- 19. オブジェクトの参照と変更可能性
- 20. 東京キャビネットと可変サイズのC++オブジェクト
- 21. 入れ子オブジェクトとビルダーを持つ不変値オブジェクト
- 22. 可変クラスと不変クラス
- 23. 最終的な不変性を持つ不変オブジェクトのデザインパターン
- 24. JSでオブジェクトの可変かつ不変のコピーを作成する方法
- 25. セッション中のオブジェクトをJavaで変更不能にする
- 26. オブジェクトcの変更可能で不変なオブジェクトの数を保持していますか?
- 27. 不変オブジェクトにポインタが許可されていますか?
- 28. このJavaコンテキストで不変または可変オブジェクトを使用していますか?
- 29. 複雑な不変のオブジェクトを扱う
- 30. 不変のjsオブジェクトtypescriptですインターフェイス
役立ちます)と呼ばれています。この[SO](http://stackoverflow.com/questions/279507/what-is-meant-by-immutable)は役に立ちます。 – Kulasangar
ここでは、テーマに関する良いリンクがあります:http://stackoverflow.com/questions/214714/mutable-vs-immutable-objects –