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. node.js - nodejs+express+vue2. javascript - vue2.0中使用vue2-dropzone的demo,vue2-dropzone的github網址是什么??百度不到。3. java軟引用在android中有實際應用場景嗎?4. Python 子類能否覆蓋全局函數?5. kv存儲 - 怎樣用 Redis 緩存微博的評論列表?6. javascript - JS如何取對稱范圍的隨機數?7. node.js - win7下,npm 無法下載依賴包,淘寶鏡像也裝不上,求幫忙???8. javascript - vue上傳圖片,并顯示在頁面中的插件9. mysql - sql 找出2個數據庫的差異表名10. vue計算屬性怎么樣與for結合使用
