[解決済み] イミュータブルとはどういう意味ですか?
2022-03-24 11:43:48
質問
これは今までで一番バカな質問かもしれませんが、Javaの初心者にとってはかなり分かりにくい質問だと思います。
- が何を意味するのか、誰か明確にしてください。 不変 ?
-
なぜ
String
は不変ですか? - イミュータブルオブジェクトのメリット/デメリットは何ですか?
-
のようなミュータブルオブジェクトは、なぜ
StringBuilder
は String よりも優先され、その逆もまた然りですか?
いい例(Javaで)があれば、本当にありがたいです。
どのように解決するのですか?
Immutableとは、あるオブジェクトのコンストラクタの実行が完了したら、そのインスタンスは変更できないことを意味します。
これは、他の誰かがその内容を変更することを心配することなく、オブジェクトへの参照を受け渡しできることを意味し、便利です。 特に並行処理を行う場合、変更されることのないオブジェクトはロックの問題が発生しません。
例
class Foo
{
private final String myvar;
public Foo(final String initialValue)
{
this.myvar = initialValue;
}
public String getValue()
{
return this.myvar;
}
}
Foo
を呼び出す側が心配する必要はありません。
getValue()
は文字列のテキストを変更するかもしれません。
と同じようなクラスを想像してみると
Foo
を使用し、しかし
StringBuilder
ではなく
String
をメンバーとして呼び出した場合、その呼び出し元が
getValue()
を変更することができるようになります。
StringBuilder
属性は
Foo
のインスタンスを作成します。
また、さまざまな種類の不変性を見つけることができるので、注意してください。Eric Lippertが書いた ブログ記事 このことについて 基本的に、インターフェースは不変だが、裏側で実際のミュータブルはプライベートな状態(したがってスレッド間で安全に共有できない)であるオブジェクトを持つことができます。
関連
-
JDKの設定時にjava.dllが見つからない、java SE Runtime Environmentが見つからない問題が発生しました。
-
Intellij IDEAのエラー「CreateProcess error=2, system could not find specified file」に対する完璧な解決策です。
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] JavaBeanとは何ですか?
-
[解決済み] Java の文字列は本当に不変なのですか?
-
[解決済み】Apache Camelとは一体何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
エラー java.util.NoSuchElementException
-
springboot project MIMEタイプ text/htmlで転送された静的ファイルを読み込む。
-
undefinedeclipse エラー。この行に複数のアノテーションが見つかりました: - 文字列を型解決に解決できない
-
JavaMailのメール送信が失敗するケースとその説明の分析
-
JQuery DataTable 详解
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
linux run jarfile Invalid or corrupt jarfile error.
-
[解決済み】String, StringBuffer, StringBuilderについて
-
[解決済み】文字列は不変です。具体的にはどういうこと?[重複しています。]