Как этот сервлет код компилируется

1

У меня есть следующий код устаревшего кода:

Map<String, String> vars = request.getParameterMap(); // (point 1) request is HttpServletRequest
    try{
        for (Entry paramEntry : vars.entrySet()) {
            String paramKey = (String)paramEntry.getKey();
            String[] paramValues = (String[])paramEntry.getValue();// (point 2)
        }

Согласно java doc getParameterMap() должен возвращать java.util.Map<java.lang.String,java.lang.String[]>. Но в моем затмении этот код компилируется абсолютно нормально, и этот код работает с возрастом в живой среде.
Мой вопрос: как код компилируется в точке 1, хотя тип возврата отличается, а также в точке 2 мы извлекаем String[].

PS: Моментальный снимок Eclipse Изображение 174551

  • 1
    Ваш request.getParameterMap() является сырым, поэтому он не жалуется.
  • 2
    Если это правда, что он работает с незапамятных времен, то, вероятно, это не API Java EE 6, а в Java EE 5 это просто необработанная карта.
Показать ещё 1 комментарий
Теги:
servlets

1 ответ

-2

Исправьте меня, если я ошибаюсь, но я думаю, что более старый компилятор меняет это:

Map<String, String> vars = request.getParameterMap();

в эту (необработанную карту):

Map vars = request.getParameterMap();

Поэтому он должен работать нормально. Но, похоже, он изменился в Java7. Я не могу найти точную ссылку, но это может помочь:

http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html

  • 0
    Ни одна из ваших ссылок не поддерживает вашу заявку. Второй кажется совершенно неактуальным.
  • 0
    Взгляните на RFE: 7062745 и RFE: 7057297. Не совсем такие же случаи, как здесь, но некоторые изменения были внесены в управление универсальными типами в Java7 (вторая ссылка удалена).
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню