2016-05-19 28 views
4

从流中收集时,我无法看到EntrygetKey()getValue()方法,因为Eclipse仅提供了Object方法,尽管所有方法都是非常规编译的。使用流时使用Map.Entry方法的Eclipse Mars错误?

someMap.entrySet().stream() 
        .filter(entry -> entry.getKey().isConsumed() || entry.getKey().getSurvivalCount() > 0) 

        // this compiles but auto-completion only offers object methods 
        .collect(Collectors.toMap(entry -> entry.getKey(), entry -> entry.getValue())); 

这是Eclipse的错误还是我失去了一些东西?

我使用: 版本:Mars.1版本(4.5.1)

图像可视化:

eclipse playing tricks

回答

2

Eclipse是开心的时候我指定的谓词作为一个匿名的内部等级:

Predicate<Entry<String, Integer>> predicate = new Predicate<Entry<String, Integer>>() { 
    public boolean test(Entry<String, Integer> entry) { 
     return entry.getKey() == null || entry.getKey().length() > 6; 
    } 
}; 
// ... 
someMap.entrySet().stream().filter(predicate) 

但是,lambda存在问题。过去还有其他的日食臭虫,例如它甚至没有编译,如thisthis之一。

所以,看起来你发现了一个lambda和代码完整的bug。

3

我正在使用版本:Mars.2版本(4.5.2)版本ID:20160218-0600我遇到同样的问题。

它看起来像一个错误,因为它将entry变量识别为Entry类型的对象。虽然我在Eclipse bug list中找不到这个错误。

+0

这并没有真正回答这个问题。如果您有不同的问题,可以通过单击[提问](http://stackoverflow.com/questions/ask)来提问。您也可以[添加赏金](http://stackoverflow.com/help/privileges/set-bounties)来引起对此问题的更多关注。 - [来自评论](/ review/low-quality-posts/12409174) – Matsemann

+3

@Matsemann问题是“这个Eclipse错误还是我错过了什么?”。如何:“我遇到同样的问题,它看起来像一个错误[”]不是一个答案,具体来说,如何可能被你解释为另一个问题? –

+0

@ErwinBolwidt那么这个问题是一个不好的问题,它应该要求解决问题的方法,而不是其他人有相同的问题。要清楚,在审查这个答案时,我选择了类似*这是一个“我有这个问题,以及答案”* – Matsemann