teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

修正

2020/08/24 03:50

投稿

amiya
amiya

スコア1218

answer CHANGED
@@ -2,7 +2,7 @@
2
2
  `C.setB(B);`
3
3
 
4
4
  Cで受け取る場合
5
- `B x = A.getB();`
5
+ `B = A.getB();`
6
6
 
7
7
  **値渡し**がディープコピーのことを言っているのであれば、
8
8
  (JAVAにはそもそも値渡ししかない)
@@ -11,5 +11,9 @@
11
11
  (もしくはC側で受けたものをcloneする)
12
12
 
13
13
  Cで受け取る場合
14
- `B x = A.getB().clone();`
14
+ `B = A.getB().clone();`
15
- (もしくはA側でcloneしたものを渡す)
15
+ (もしくはA側でcloneしたものを渡す)
16
+
17
+ 少し修正しました。この状態でA,B,Cは、各クラスのインスタンス(の参照を格納する変数)です。
18
+ データを双方で変更したいのであれば、ディープコピーではなく、インスタンスの参照を共有すれば
19
+ 片方の変更はもう片方で参照したときにも反映されます。

1

追加

2020/08/24 03:50

投稿

amiya
amiya

スコア1218

answer CHANGED
@@ -1,3 +1,15 @@
1
+ Aから送る場合
1
- そのまま渡すだけでは?
2
+ `C.setB(B);`
3
+
4
+ Cで受け取る場合
2
5
  `B x = A.getB();`
6
+
7
+ **値渡し**がディープコピーのことを言っているのであれば、
8
+ (JAVAにはそもそも値渡ししかない)
3
- みたいに。
9
+ Aから送る場合
10
+ `C.setB(B.clone());`
11
+ (もしくはC側で受けたものをcloneする)
12
+
13
+ Cで受け取る場合
14
+ `B x = A.getB().clone();`
15
+ (もしくはA側でcloneしたものを渡す)