У меня есть следующий код устаревшего кода:
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
Исправьте меня, если я ошибаюсь, но я думаю, что более старый компилятор меняет это:
Map<String, String> vars = request.getParameterMap();
в эту (необработанную карту):
Map vars = request.getParameterMap();
Поэтому он должен работать нормально. Но, похоже, он изменился в Java7. Я не могу найти точную ссылку, но это может помочь:
http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html
request.getParameterMap()
является сырым, поэтому он не жалуется.