Я пробовал свои руки на векторах и написал простой код для доступа к его элементам через перечисление.
Vector v = new Vector();
v.add("Some String");
v.add(10);
Enumeration e = v.elements();
while(e.hasMoreElements()) System.out.println(e.nextElement());
Работа с необработанными типами дает результаты, как ожидалось (печатает элементы). Но, когда я использую общий тип перечислителя, он становится сложным.
С параметром типа String:
Vector v = new Vector();
v.add("Some String");
v.add(10);
Enumeration<String> e = v.elements();
while(e.hasMoreElements()) System.out.println(e.nextElement());
Вывод:
Некоторая строка
Исключение в потоке "main" java.lang.ClassCastException: java.lang.Integer нельзя передать в 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());
Вывод:
Некоторая строка
10
Что здесь происходит? Не должны ли оба случая вызывать исключение ClassCast?