我的代码类似于以下代码,它使用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?如果没有,我做错了什么?
答案 0 :(得分:-1)
您是否已使用Java 8进行过测试?如果问题仍然存在于最新且仅受支持的Java版本中,我建议您创建bug report。
否则请使用您在问题中提供的解决方案。