为什么这个2008年的简单Java示例在最新的Eclipse / JDK中失败了?

问题描述

| 这是一个非常简单的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的设置? 仅供参考,我在Eclipse的更新版本上使用Windows XP和JDK 1.6.0_24 x86。     

解决方法

示例代码完全是错误的-它不会(也永远不会)编译,并且eclipse应该在代码中显示出来。 问题在于
Map envMap
是原始类型,因此
envMap.keySet()
也是原始类型,不能在增强的for循环中将其元素隐式转换为
String
。 解决方案:只需将Map定义更改为:
Map<String,String> envMap = System.getenv();
    ,因为这个例子是错误的。它应该包含行
Map<String,String> envMap = System.getenv();
而不是
Map envMap = System.getenv();