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. mysql儲存json錯誤2. sql語句 - 如何在mysql中批量添加用戶?3. 怎么php怎么通過數組顯示sql查詢結果呢,查詢結果有多條,如圖。4. mysql - 表名稱前綴到底有啥用?5. 編輯成功不顯示彈窗6. 哭遼 求大佬解答 控制器的join方法怎么轉模型方法7. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語法實現存在即更新應該使用哪個標簽?8. mysql - 數據庫表中,兩個表互為外鍵參考如何解決9. mysql - 怎么生成這個sql表?10. Navicat for mysql 中以json格式儲存的數據存在大量反斜杠,如何去除?
