- PR -

Castのエラー

投稿者投稿内容
PG初心者
会議室デビュー日: 2007/01/05
投稿数: 10
投稿日時: 2007-01-29 17:27
for(int cnt = 0, max = List.size(); cnt < max; cnt++){

Map map = (Map)List.get(cnt);
String name = (String)map.get("name");

}
String name = (String)map.get("name");で、Castのエラーが出てしまいます。
Stirng型にキャストしたいのですが、なにか方法ありますでしょうか。
Listの中身は下記のような感じです。
List=[{no=11111111, flg=0, name=taro},{no=222222222, flg=0, name=hanako}]

どせい
大ベテラン
会議室デビュー日: 2006/10/25
投稿数: 145
投稿日時: 2007-01-29 17:42
引用:

PG初心者さんの書き込み (2007-01-29 17:27) より:
for(int cnt = 0, max = List.size(); cnt < max; cnt++){

Map map = (Map)List.get(cnt);
String name = (String)map.get("name");

}
String name = (String)map.get("name");で、Castのエラーが出てしまいます。
Stirng型にキャストしたいのですが、なにか方法ありますでしょうか。
Listの中身は下記のような感じです。
List=[{no=11111111, flg=0, name=taro},{no=222222222, flg=0, name=hanako}]




当然、javaのドキュメントを読んだ上での質問なんだよね?
例えば↓とか。
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/util/Map.html
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/util/List.html
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2007-01-29 17:58
コード:
import java.util.*;

public class MapTest {
	public static void main(String[] args) {
		List list = new ArrayList();
		Map m1 = new HashMap();
		m1.put("no", new Integer(11111111));
		m1.put("flg", new Integer(0));
		m1.put("name", "taro");
		
		Map m2 = new HashMap();
		m2.put("no", new Integer(222222222));
		m2.put("flg", new Integer(0));
		m2.put("name", "hanako");
		
		list.add(m1);
		list.add(m2);
		
		for (int  cnt = 0, max = list.size(); cnt < max; cnt++){
			Map map = (Map)list.get(cnt);
			String name = (String)map.get("name");
			
			System.out.println(name);
		} 
	}
}


できますが。

#あまりに、触らなさ過ぎて、javaのテストコード、書けなくなってた。 orz
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-01-29 18:55
引用:

Castのエラーが出てしまいます。


何てエラーがでますか?どういう内容が出力されていますか?
こちら側ではそっちで何が起こっているかわかりません。
詳しく書いてください。
PG初心者
会議室デビュー日: 2007/01/05
投稿数: 10
投稿日時: 2007-01-29 19:57
java.lang.ClassCastException
というエラーが出ます。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2007-01-29 20:11
System.out.println(hoge.getClass().getName());
どんたくお
ベテラン
会議室デビュー日: 2005/08/29
投稿数: 88
投稿日時: 2007-01-29 20:12
こんばんは、どんたくおです。

PG初心者さんが、記載されましたプログラムで、
java.lang.ClassCastException
が発生する箇所は、キャストを行っている
Map map = (Map)List.get(cnt);
String name = (String)map.get("name");
の二箇所かと思います。
java.lang.ClassCastException
がどこで起きているのか特定されると、解決の道は開けるのではないでしょうか。

例えば、
System.out.println("1");
Map map = (Map)List.get(cnt);
System.out.println("2");
String name = (String)map.get("name");
のようにして、プリントするか、もしくはスタックトレースが出ると、手早いと思います。

1と2が、出力されたら
String name = (String)map.get("name");
が怪しいので、格納されているmapを確認
2が出力されなかったら、
Map map = (Map)List.get(cnt);
が怪しいので、リストを確認

地道かもしれませんが、いかがでしょうか。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-01-29 23:00
何故詳しく書いてと書いてあるのに、
引用:

java.lang.ClassCastException
というエラーが出ます。


としか書かないのでしょう?
キャストでエラーと仰っているので、
java.lang.ClassCastExceptionがスローされているのは分かっています。

コード:
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer
    at hoge.Hoge.main(Hoge.java:25)


見たいな感じで出ると思うのですが、それを書かないと。

この例外がスローされるときは、

ある型にキャストしようとしたけど、型の互換性がありませんでした。
元のオブジェクトの型はjava.lang.Integerです。

と言う意味です。自身のエラーの出力とコードと見比べてみてください。

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