- 締切済み
List(integer)の比較
List(integer)をif文で評価した際に、 java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer と怒られてしまいます。キャスト等が必要なのでしょうか? 原因と対処が知りたいです。 以下のような、使い方をしています。 ----- List<Integer> list; if(list.get(0) > 100){ } -----
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- neuron-x
- ベストアンサー率52% (139/266)
(listのインスタンス生成、値の追加部分をどう書いているか分かりませんが)この内容であれば、ClassCastExceptionは発生しないはずですよ。 そもそも、List<Integer>としているので、Integer系以外の値を入れようとするとコンパイルエラーになります。 ジェネリクスの無かった昔ならあり得た話ですが…。 if文で参照しているlistは、本当にList<Integer>のlistですか? 名前が同じだけで、実は違うインスタンスという可能性が考えられます。
- wormhole
- ベストアンサー率28% (1626/5665)
具体的にlistをどのように作っているのかわかりませんがエラーメッセージから判断するとlistの要素として入っているのがIntegerではなく実はStringになってるのでは? 例えば以下のようにすればコンパイルはできますが実行時には同様のエラーになりますよ。 List<String> strlist = new ArrayList<String>(); strlist.add("string"); Object obj = strlist; List<Integer> list = (List<Integer>)obj; for (Integer i : list) { System.out.println(i); }