[解決済み】Javaや.NETで文字列がmutableにならないのはなぜ?
質問
を作ることになったのはなぜか?
String
Javaと.NET(と他のいくつかの言語)では不変なのですか?なぜミュータブルにしなかったのでしょうか?
どうすれば解決するの?
によると 効果的なJava の第4章73ページ、第2版。
<ブロッククオートこれには多くの理由があります。不変のクラスは、より簡単です。 設計、実装、そして使用は、ミュータブルクラスより優れています。また を、より安全なものにすることができます。
[...]
" 不変のオブジェクトはシンプルです。 イミュータブルオブジェクトは、以下の状態になることができます。 の状態、つまり作成時の状態です。もし、あなたが すべてのコンストラクタがクラス不変量を確立していれば、そのクラスは これらの不変量は常に真であり続けることが保証されています。 ということです。
[...]
不変オブジェクトは本質的にスレッドセーフであり、同期を必要としません。 複数のスレッドによって破壊されることはありません。 が同時にアクセスします。これは最も簡単な方法です。 スレッドセーフを実現するために 実際、どのスレッドも は、他のスレッドがイミュータブルオブジェクトに及ぼす影響を考慮する必要があります。したがって 不変のオブジェクトは、自由に共有することができます。
[...]
その他、同章の小ネタ。
イミュータブルなオブジェクトを共有できるだけでなく、その内部を共有することも可能です。
[...]
イミュータブルオブジェクトは、ミュータブルまたはイミュータブルにかかわらず、他のオブジェクトのための優れたビルディングブロックになります。
[...]
イミュータブルクラスの唯一の欠点は、異なる値ごとに個別のオブジェクトが必要になることです。
関連
-
linux run jarfile Invalid or corrupt jarfile error.
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?
-
[解決済み] ランダムな文字列を使用するこのコードは、なぜ "hello world" と表示されるのですか?
-
[解決済み] ファイルの内容からJavaの文字列を作成するにはどうすればよいですか?
-
[解決済み] 特定のUnicode文字を含むコメントでのJavaコードの実行が許可されているのはなぜですか?
-
[解決済み] PHPの文字列で、シングルクオートとダブルクオートの違いは何ですか?
-
[解決済み】大文字・小文字を区別しない「Contains(string)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
eclipse アクセス制限です。タイプ 'xxx' は API ではありません(必須ライブラリ '' の制限)。
-
Eclipseプロンプトを実行する java仮想マシンを使用しない
-
javaでクラスを作成すると、enclosing classでないように見える
-
java.lang.NoClassDefFoundError: org.apache.jasper.el.ELContextImpl クラスを初期化できませんでした。
-
スレッド "main" で例外発生 java.net.BindException: アドレスは既に使用中です。NET_Bind
-
起動時にEclipseエラーが発生しました。起動中に内部エラーが発生しました。java.lang.NullPoin: "Javaツーリングの初期化 "中に内部エラーが発生しました。
-
java 例外。Javaツールの初期化
-
コミットには何も追加されないが、未追跡のファイルが存在し、gitで未追跡のファイルに対する完璧な解決策
-
[解決済み】文字列は不変です。具体的にはどういうこと?[重複しています。]
-
[解決済み] .NETのStringはなぜimmutableなのか?[重複あり]