使用jdk 1.7的foreach中的“不兼容类型” - 1.6

时间:2016-10-07 12:51:21

标签: java java-7

我的代码类似于以下代码,它使用jdk 1.6.0_22进行编译,但不能使用jdk 1.7.0_79进行编译:

for(Entry<A, B> entry: aBean.getData().entrySet()) { }

getData()返回Map<A, B>。使用1.7时会发生以下编译错误,表明已删除返回的Set的泛型:

[compile] /path/to/file.java:170: error: incompatible types
[compile] for (Entry<A, B> entry: aBean.getData().entrySet()) {
[compile] ^
[compile] required: Entry<A, B>
[compile] found: Object 

当我使用局部变量来保存Set:

时,错误消失
Set<Entry<A, B>> mySet = aBean.getData().entrySet();
for(Entry<A, B> entry: mySet) { } //works

鉴于这个编译在1.6以下,我是否正确假设这是一个编译Bug?如果没有,我做错了什么?

1 个答案:

答案 0 :(得分:-1)

您是否已使用Java 8进行过测试?如果问题仍然存在于最新且仅受支持的Java版本中,我建议您创建bug report

否则请使用您在问题中提供的解决方案。