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. python - Win7調用flup報錯’module’ object has no attribute ’fromfd’2. 網頁爬蟲 - Python 爬蟲中如何處理驗證碼?3. mysql - 分庫分表、分區、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處4. Python如何播放還存在StringIO中的MP3?5. javascript - 請教如何獲取百度貼吧新增的兩個加密參數6. mysql 一個sql 返回多個總數7. python - 我在使用pip install -r requirements.txt下載時,為什么部分能下載,部分不能下載8. mysql - 如何減少使用或者不用LEFT JOIN查詢?9. Python爬蟲如何爬取span和span中間的內容并分別存入字典里?10. python - 編碼問題求助
