我想在我的Android應用程序中過濾Java中的對象列表,爲此我遵循this answer(Java 8建議),但是作爲Lambdas在Android SDK中,不支持,我用gradle-retrolambda,但我得到這個運行時錯誤
java.lang.NoSuchMethodError: No interface method stream()Ljava/util/stream/Stream; in class Ljava/util/List; or its super classes (declaration of 'java.util.List' appears in /system/framework/core-libart.jar)
使用gradle-retrolambda和Lightweight-Stream-API過濾Android中的對象列表
這是我使用的代碼行:
List<CaseDetails> closedCaseDetailsList = caseDetailsList.stream().filter(item -> item.caseClosed.equals(true)).collect(Collectors.toList());
我相信它應該gradle這個工作-retrolambda sh應該在Java7上照顧Lambdas。
接下來,我想Lightweight-Stream-API與gradle這個-retrolambda一起,改變了一點點我的代碼,根據輕,流API
List<CaseDetails> closedCaseDetailsList = Stream.of(caseDetailsList).filter(item -> item.caseClosed.equals(true)).collect(Collectors.toList());
的使用,但它給了我在Collectors.toList()
說
collect
(com.annimon.stream.Collector<? super com.example.yankee.cw.CaseDetails,java.lang.Object,java.lang.Object>)
in Stream cannot be applied
to
(java.util.stream.Collector<T,capture<?>,java.util.List<T>>)
我也嘗試過明確的類型轉換的Stream
到List<CaseDetails>
但沒有工作(當然)。
我試過Slack社區,SO聊天室,但找不到解決方案。我發現對我的問題最接近的是這個question,但它是一個不同的錯誤。
謝謝
明白了。我的'Collectors'是之前導入的Java7類,它繼續使用相同的類。非常感謝你和@Jahnold – Yankee