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. javascript - 如何在外部点击,跳转到网页后,显示指定的模块。2. 使用未定义的常量user_id-假定为“user_id”3. css - 关于background-position百分比的问题?4. atom开始输入!然后按tab只有空格出现没有html格式出现5. python方法调用6. python - Flask 脚本,运行一段时间后无响应7. mysql - 记录开始时间和结束时间,表字段类型用timestamp还是datetime?8. 网页爬虫 - Python爬虫入门知识9. 看不懂你这一步的操作10. 这个java项目有一个首页地址是微信前台的,这个所谓的微信前台指的是什么?

网公网安备