- PR -

質問です。

投稿者投稿内容
tan
会議室デビュー日: 2004/05/26
投稿数: 5
投稿日時: 2004-05-26 19:44
とぼけた質問かもしれませんが、
教えてください。

現在、Vectorクラスにデータベースのデータを格納しています。それの取り出し方を教えてほしいのです。
普通にVectorクラスにいれたときはIteratorで取り出せばよいですが、Vectorクラスに下のように定義したときはどうとりだせばよいのでしょうか?

Vector goodsdata = new Vector();

while( rs.next() ){
   goodsdata.add(new Goods(rs.getString("ID"),
    rs.getInt("GOODSID"),
    rs.getString("GOODSNAME"),
    rs.getInt("PRICE"),
    rs.getString("FILENAME")));
}

Goodsクラスはid,goodsid,goodsname,price,filenameの値を
セットするものです。

説明不足の場合は足りないところを教えてください。
よろしくお願いします。
K
大ベテラン
会議室デビュー日: 2004/04/07
投稿数: 174
投稿日時: 2004-05-26 19:49
Vectorの中に入っているのはGoodsクラスのオブジェクトなので普通にIteratorで取り出してキャストすればいいだけではないでしょうか?




スレッドのタイトルは質問の要約にしたほうが見る人には親切だと思います。
tan
会議室デビュー日: 2004/05/26
投稿数: 5
投稿日時: 2004-05-26 20:00
タイトルの件わかりました。
あまり書き込んだことがなかったので、教えてもらってよかったです。

その普通にキャストがよくわからないので教えてもらえませんか?
すみません。ちゃんとわかってなくて。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-05-26 20:10
引用:

tanさんの書き込み (2004-05-26 20:00) より:
その普通にキャストがよくわからないので教えてもらえませんか?
すみません。ちゃんとわかってなくて。


Iteratorからオブジェクト取り出すときにキャストしていないのですか?
こんな感じです。

Goods goods = (Goods)itertor.next();

キャストは、コンパイラに「このオブジェクトはこの型として扱う」ことを教えてあげることです。
K
大ベテラン
会議室デビュー日: 2004/04/07
投稿数: 174
投稿日時: 2004-05-26 20:12
引用:

その普通にキャストがよくわからないので教えてもらえませんか?
すみません。ちゃんとわかってなくて。


Iterator itr = goodsdata.iterator();
while(itr.hasNext()){
Goods tmp = (Good)itr.next();
// なんか処理
}

念のために言うと、IteratorではなくてArrayList使いましょう。
あと、Goodsクラスはおそらく普通のbeanだと思われるので、
コンストラクタの引数減らしてsetter,getterを使ったほうが綺麗になると思いますよ。
tan
会議室デビュー日: 2004/05/26
投稿数: 5
投稿日時: 2004-05-26 20:25
ukさんSKTさんありがとうございます。

実はさっきの処理をjspで行ってます。
(説明不足ですみません)

<jsp:useBean id="goods" class="shopjava.Goods" scope="request" />

<% Vector goodsadd = null;

goodsadd = (Vector)request.getAttribute("goods");
Iterator ite = goodsadd.iterator( );

while( ite.hasNext() ){
out.println(ite.next());
goods go = (goods)ite.next();

}
%>
としましたが、
goods go = (goods)ite.next();でエラーを起こします。
エラーはシンボルを解決できません。なのですが、jspでは自分で作ったクラスのキャストはできないのでしょうか。
K
大ベテラン
会議室デビュー日: 2004/04/07
投稿数: 174
投稿日時: 2004-05-26 20:29
引用:

goods go = (goods)ite.next();でエラーを起こします。
エラーはシンボルを解決できません。なのですが、jspでは自分で作ったクラスのキャストはできないのでしょうか。


goods go = (Goods)ite.next();
ですよ。キャストはクラス名です。
それからこのくらいのことはちょっと調べればすぐにわかります。
自分で調べる癖をつけましょう。
tan
会議室デビュー日: 2004/05/26
投稿数: 5
投稿日時: 2004-05-26 20:37
すみません。
ありがとうございました。

goods go = (Goods)ite.next();

でも変わりませんでしたが、
もうちょっと自分で考えて見ます。

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