回答編集履歴

2

修正

2020/08/24 03:50

投稿

amiya
amiya

スコア1218

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  Cで受け取る場合
8
8
 
9
- `B x = A.getB();`
9
+ `B = A.getB();`
10
10
 
11
11
 
12
12
 
@@ -24,6 +24,14 @@
24
24
 
25
25
  Cで受け取る場合
26
26
 
27
- `B x = A.getB().clone();`
27
+ `B = A.getB().clone();`
28
28
 
29
29
  (もしくはA側でcloneしたものを渡す)
30
+
31
+
32
+
33
+ 少し修正しました。この状態でA,B,Cは、各クラスのインスタンス(の参照を格納する変数)です。
34
+
35
+ データを双方で変更したいのであれば、ディープコピーではなく、インスタンスの参照を共有すれば
36
+
37
+ 片方の変更はもう片方で参照したときにも反映されます。

1

追加

2020/08/24 03:50

投稿

amiya
amiya

スコア1218

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