Почему этот простой Java-пример 2008 года терпит неудачу в моем современном Eclipse / JDK? - PullRequest
0 голосов
/ 25 мая 2011

Вот очень простой пример в Java, предназначенный для распечатки всех системных переменных среды:

http://www.devdaily.com/blog/post/java/java-how-to-print-system-env-environment-variables

Код кажется довольно простым - он просто перебирает переменные окружения в виде сопоставления, печатая каждый ключ и значение, однако при выполнении кода я получаю следующую ошибку:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
Type mismatch: cannot convert from element type Object to String

Что здесь происходит? Это пример мусора или я настроил свой Eclipse / JDK таким образом, чтобы это не работало?

К вашему сведению, я использую Windows XP с JDK 1.6.0_24 x86 в обновленной версии Eclipse.

Ответы [ 2 ]

3 голосов
/ 25 мая 2011

Пример кода просто неверен - он не компилируется (и никогда не может), и затмение должно показывать это в коде.

Проблема в том, что Map envMap является необработанным типом, поэтому envMap.keySet()также является необработанным типом, и его элементы не могут быть неявно преобразованы в String в расширенном цикле for.

Решение: просто измените определение карты на:

Map<String,String> envMap = System.getenv();
2 голосов
/ 25 мая 2011

Потому что пример неверный. Он должен содержать строку

Map<String, String> envMap = System.getenv();

вместо

Map envMap = System.getenv();
...