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. golang - 用IDE看docker源碼時的小問題2. javascript - 請指條明路,angular的$event,在select中卻是undefined?3. 前端 - @media query 使用出現的問題?4. 我何時應該在Java中使用JFrame.add(component)和JFrame.getContentPane()。add(component)5. html - css氣泡,實現“倒三角(不知道算不算三角了)”可透明的。6. 運行python程序時出現“應用程序發生異常”的內存錯誤?7. docker - 如何修改運行中容器的配置8. 利用IPMI遠程安裝centos報錯!9. phpstudy8.1沒集成mysql-front10. html5和Flash對抗是什么情況?

網公網安備