Próbowałem swoich sił na wektorach i napisałem prosty kod, aby uzyskać dostęp do jego elementów poprzez wyliczenie.Otrzymuję wyjątek ClassCast, gdy wyliczam wektor z parametrem typu String, ale nie ma wyjątku z liczbą całkowitą jako parametrem typu
Vector v = new Vector();
v.add("Some String");
v.add(10);
Enumeration e = v.elements();
while(e.hasMoreElements()) System.out.println(e.nextElement());
Praca z typami nieprzetworzonymi daje wyniki zgodnie z oczekiwaniami (wypisuje elementy). Ale kiedy używam generycznego typu modułu wyliczającego, robi się to trudne.
sznurkiem jako typ parametru:
Vector v = new Vector();
v.add("Some String");
v.add(10);
Enumeration<String> e = v.elements();
while(e.hasMoreElements()) System.out.println(e.nextElement());
wyjściowa:
Niektóre String
Wyjątek w wątku "main" java.lang.ClassCastException: java.lang.Integer nie można rzutowany na java.lang.String
Z liczbą całkowitą jako typ Parametr:
Vector v = new Vector();
v.add("Some String");
v.add(10);
Enumeration<Integer> e = v.elements();
while(e.hasMoreElements()) System.out.println(e.nextElement());
wyjściowa:
Niektóre String
Co się tu dzieje? Czy oba przypadki nie powinny generować wyjątku ClassCast?
'Wyliczenie <> e = v.elements();' Jak to się kompiluje? –
@KonstantinYovkov Myślę, że to literówka i OP oznaczało 'Enumeration'. –
Mena
Używasz typu surowego 'Vector': http://stackoverflow.com/a/2770692/1608594 Nie powinieneś używać typów surowych. – carbolymer