ベクトルで手を入れていて、列挙を通じてその要素にアクセスする簡単なコードを書きました。String型のパラメータでベクトルを列挙すると、ClassCast例外が発生しますが、型パラメータとしてInteger型の例外はありません。
Vector v = new Vector();
v.add("Some String");
v.add(10);
Enumeration e = v.elements();
while(e.hasMoreElements()) System.out.println(e.nextElement());
生の種類を使用すると、期待どおりの結果が得られます(要素を印刷します)。しかし、一般的なタイプの列挙子を使用すると、複雑になります。
Vector v = new Vector();
v.add("Some String");
v.add(10);
Enumeration<String> e = v.elements();
while(e.hasMoreElements()) System.out.println(e.nextElement());
出力:スレッド "メイン" とjava.lang.ClassCastExceptionで
いくつかの文字列
例外:java.lang.Integerでは、することはできませんtypeパラメータとして文字列を使用して
java.lang.Stringへのキャスト
Integer型パラメータ:
Vector v = new Vector();
v.add("Some String");
v.add(10);
Enumeration<Integer> e = v.elements();
while(e.hasMoreElements()) System.out.println(e.nextElement());
出力:
いくつかの文字列
ここで何が起こっていますか? 両方のケースでClassCast例外が生成されるべきではありませんか?
'Enumeration <> e = v.elements();'これはどのようにコンパイルされますか? –
@ ConstantinYovkov私はそれが誤字だと思うし、OPは 'Enumeration'を意味していた。 –
Mena
'Vector'生の型を使用しています:http://stackoverflow.com/a/2770692/1608594生の型は使用しないでください。 – carbolymer