- PR -

キャストって言うんですかね??

投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2005/05/07
投稿数: 32
投稿日時: 2006-05-23 14:47
やっぱり、言ってることがよくわからない。日本語でおk。
読点を使わない国の人かな ? 差別するつもりはないけど、教えを乞うならそれなりの言葉を使おうよ。

で、そのロジック(のつもりのもの)はうっすらと理解できないでもないけど、
どうなってほしいのかが今ひとつわからない。

class Dataの定義と、最終的にlistにどんなものが入ってほしいのかを詳しく書いて。
ゆう
常連さん
会議室デビュー日: 2003/06/27
投稿数: 45
投稿日時: 2006-05-23 15:04
実体の参照を確認した方がよいのではないでしょうか?
ArrayListにaddしても実体への参照は変わりません。
(ぼぼさんの言う「確定」はされない。と私は思った)

コード:
public class Test {
	public static void main(String[] args) {
		classA a = new classA();
		ArrayList l = new ArrayList();
		l.add(a);
		
		a.b.c = 10;
		System.out.println(a.b.c);
		System.out.println(((classA)l.get(0)).b.c);

		a.b.c = 20;
		System.out.println(a.b.c);
		System.out.println(((classA)l.get(0)).b.c);
	}

}

class classA{
	public classB b = new classB();
}

class classB{
	public int c = 0;
}



結果
 10
 10
 20
 20


 こんな感じで、なぜcの値が変わるか、ということじゃないのかな?
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2006-05-23 15:30
「参照」自体を理解していないということに、なりそうな気がします。
末記人
常連さん
会議室デビュー日: 2004/03/31
投稿数: 27
投稿日時: 2006-05-23 15:31
おっしゃりたい意味がやっと分かりました。

↓これはNG
コード:
 Data data1 = new Data();
 for (int j=0;j<B.size();j++) {
  data1.setDD(Bの結果);
  data1.setEE(Bの結果);
  list.add(data1);
 }


↓これはOKということですよね?>ぼぼさん
コード:
 for (int j=0;j<B.size();j++) {
  Data data = new Data();
  data.setAA(data1.getAA());
  data.setBB(data1.getBB());
  data.setCC(data1.getCC());
  data.setDD(Bの結果);
  data.setEE(Bの結果);
  list.add(data);
 }


Javaのオブジェクト型は参照渡しです。
よってNG例の処理ではdata1を3回追加していますが、
同一オブジェクトであるために参照先も同一になってしまいます。

data1オブジェクト生成 ←
【ループ1回目】
list1:data1(=Bの結果の1件目を参照)
【ループ2回目】
list1:data1(=Bの結果の2件目を参照)←NG
list2:data1(=Bの結果の2件目を参照)
【ループ3回目】
list1:data1(=Bの結果の3件目を参照)←NG
list2:data1(=Bの結果の3件目を参照)←NG
list3:data1(=Bの結果の3件目を参照)

OK例のようにlistに要素を追加する際、
毎回別オブジェクトとして追加すれば問題ありません。

【ループ1回目】
dataオブジェクト生成 ←
list1:data(=Bの結果の1件目を参照)
【ループ2回目】
dataオブジェクト生成 ←
list1:data(=Bの結果の1件目を参照)←OK
list2:data(=Bの結果の2件目を参照)
【ループ3回目】
dataオブジェクト生成 ←
list1:data(=Bの結果の1件目を参照)←OK
list2:data(=Bの結果の2件目を参照)←OK
list3:data(=Bの結果の3件目を参照)
ぼぼ
常連さん
会議室デビュー日: 2005/05/29
投稿数: 45
投稿日時: 2006-05-23 15:48
お答えありがとうございます。

質問したかった内容は悠さん・未記入さんのおっしゃるとおりです。
mioさんの言うとおり参照を理解していませんでした。

listにaddされた時そのままのdataクラスが格納されるものと思ってました。
どうもありがとうございました。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-05-23 19:37
引用:

ぼぼさんの書き込み (2006-05-23 14:10) より:
あちこちでみますがこれさんあんたの言い方はムカつきます、消えてくれ。
おれが分からないのはあんたぶしつけな言い方、おれだけじゃなく他の人にも同じ様な言い方してるよな、荒れるからあまり言いたくなかったが、どれだけおえらいのか知らんが、くそだ〜あんた。


( ´、_ゝ`) プスッ
未記入
会議室デビュー日: 2006/03/28
投稿数: 18
お住まい・勤務地: 大阪
投稿日時: 2006-05-24 00:54
なにやらお怒りを買ってしまったようですね。
不快な気分をされたのなら謝ります。
今回のレスも半分ほど読解できません。ごめんなさい。

スキルアップ/キャリアアップ(JOB@IT)