java-ee - JAVA Non-static method cannot be referenced
問題描述
Non-static method cannot be referenced from a static context
operationInfos.stream().collect(Collectors.toMap(OperationThisMonthVO::getSurgeryDate, Function.identity(), surgeryCountMerge));public static final BinaryOperator<OperationCountVO> surgeryCountMerge = (v1, v2) -> { v1.setSurgeryCount(v1.getSurgeryCount() + v2.getSurgeryCount()); return v1;};
我想對operationInfos進行分組,然后算個數,但是爆了這個錯。我這個方法不是靜態的方法..
問題解答
回答1:toMap要求的參數是Function<? super T,? extends K> keyMapper,那么你把OperationThisMonthVO::getSurgeryDate當做Function,是否符合? super T和? extends K呢?我猜測OperationThisMonthVO是operationInfo的子類而不是父類,所以這樣寫不行。可以改寫成:
toMap(operationInfo -> ((OperationThisMonthVO) operationInfo).getSurgeryDate(), ...)
試試看。
回答2:簡單的做法是,先寫成標準的 lambda 表達式,再根據 IDE 的提示來優化。
相關文章:
1. docker images顯示的鏡像過多,狗眼被亮瞎了,怎么辦?2. docker網絡端口映射,沒有方便點的操作方法么?3. css - 微信小程序點擊展開,再次點擊收回4. 點擊頁面就自動輸入到mysql.求解5. angular.js - 在ng-option 里使用過濾器無效6. javascript - react-native 里面onPress函數不能直接寫帶參數的函數7. 我在centos容器里安裝docker,也就是在容器里安裝容器,報錯了?8. Java:密碼包(加密和解密)。無效的密鑰錯誤9. java - springboot 修改默認靜態資源文件讀取路徑10. node.js - angular.js高級程序設計書本開頭配置環境出錯,誰能給解答一下
