Ответ
Enumeration — это устаревший (legacy) интерфейс для итерации по элементам коллекций. В современном коде его заменил Iterator, но он может встречаться в следующих случаях:
-
Работа с устаревшими API и коллекциями:
Vector,Hashtable,Stack,Dictionary.Vector<String> vec = new Vector<>(); Enumeration<String> en = vec.elements(); while (en.hasMoreElements()) { System.out.println(en.nextElement()); }
-
Некоторые API Java EE / Jakarta EE и сервлетов:
Enumeration<String> headerNames = request.getHeaderNames(); Enumeration<String> initParams = servletContext.getInitParameterNames(); -
Совместимость со старым кодом (legacy systems).
Недостатки по сравнению с Iterator:
- Отсутствует метод
remove()для удаления элемента во время итерации. - Более длинный и менее удобный синтаксис (
hasMoreElements()/nextElement()vshasNext()/next()).
Рекомендация: В новом коде всегда используйте Iterator или цикл for-each. Для конвертации Enumeration в современные структуры можно использовать Collections.list():
List<String> list = Collections.list(enumeration);