[解決済み] Javaでオブジェクトをコピーするにはどうしたらいいですか?
2022-03-19 06:36:43
質問
以下のコードを考えてみてください。
DummyBean dum = new DummyBean();
dum.setDummy("foo");
System.out.println(dum.getDummy()); // prints 'foo'
DummyBean dumtwo = dum;
System.out.println(dumtwo.getDummy()); // prints 'foo'
dum.setDummy("bar");
System.out.println(dumtwo.getDummy()); // prints 'bar' but it should print 'foo'
そこで
dum
から
dumtwo
を変更し
dum
に影響を与えずに
dumtwo
. しかし、上のコードではそうなっていません。で何かを変更すると
dum
を変更すると、同じ変更が
dumtwo
もあります。
というとき、私は
dumtwo = dum
をコピーします。
参照のみ
. の新しいコピーを作成する方法はありますか?
dum
に割り当て、それを
dumtwo
?
解決方法は?
コピーコンストラクタを作成します。
class DummyBean {
private String dummy;
public DummyBean(DummyBean another) {
this.dummy = another.dummy; // you can access
}
}
すべてのオブジェクトはcloneメソッドを持っていて、それを使ってオブジェクトをコピーすることができますが、これは使わないでください。クラスを作成して、不適切なcloneメソッドを実行するのはあまりにも簡単です。もしそんなことをするなら、少なくともJoshua Blochが書いた 効果的なJava .
関連
-
スタイルが読み込まれず、ブラウザコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
Spring Boot による HTTPS アクセスの設定
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaScriptのオブジェクトにキーが存在するかどうかをチェックする?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] scpを使ってリモートからローカルにフォルダをコピーするにはどうしたらいいですか?
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み】未定義のオブジェクトプロパティを検出する
最新
-
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 エラー報告 スレッド "main" での例外 java.util.NoSuchElementException
-
Spring Boot による HTTPS アクセスの設定
-
javaの模造品QQ WeChatのチャットルーム
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
node js npm gruntインストール、elasticsearch-head 5.Xインストール
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
linux run jarfile Invalid or corrupt jarfile error.
-
あるコードに出会いましたが、何に使うのか理解できません。 List<String> list = new ArrayList<String>() { { a
-
java -serverコマンドで「Error: no `server' JVM at ... jvm.dll」を解決する方法です。
-
このラインで複数のマーカーを解決する方法