2016-05-19 32 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