之路(2020"/>
要你命三千之——BUG养成之路(2020
BUG: java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.xxx.xxxx.entity.xxxx
日志提示:
Caused by: java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.shituo.entity.BaseFlowModelat java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174)at java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1359)at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499)at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486)at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)at com.shituo.service.impl.SalePlanServiceImpl.lambda$page$2(SalePlanServiceImpl.java:143)at java.util.ArrayList.forEach(ArrayList.java:1257)at com.shituo.service.impl.SalePlanServiceImpl.page(SalePlanServiceImpl.java:128)at com.shituo.service.impl.SalePlanServiceImpl$$FastClassBySpringCGLIB$$2fbe4f97.invoke(<generated>)at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:750)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:120)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)at com.shituo.service.impl.SalePlanServiceImpl$$EnhancerBySpringCGLIB$$58d29e17.page(<generated>)at com.shituo.controller.SalePlanController.lambda$page$3(SalePlanController.java:108)at com.shituomand.rx.BaseAbstractCommand.run$original$y3G70aOG(BaseAbstractCommand.java:60)at com.shituomand.rx.BaseAbstractCommand.run$original$y3G70aOG$accessor$YUoS5FgE(BaseAbstractCommand.java)at com.shituomand.rx.BaseAbstractCommand$auxiliary$ps73qsIT.call(Unknown Source)at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:86)at com.shituomand.rx.BaseAbstractCommand.run(BaseAbstractCommand.java)at comflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:302)at comflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:298)at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46)
项目场景:
提示:这里描述项目中遇到的问题:
Service业务类方法中,直接获取数组并转化为 实体的集合
然后使用拉姆达表达式对集合进行过滤的时候,报错!
List<BaseFlowModel> flowModels = FeignResultUtil.getDate(iFlowInstanceClient.getTaskDetailByBusinessId(String.valueOf(salePlanVO.getId())));if (null != flowModels) {ObjectMapper mapper = new ObjectMapper();flowModels = mapper.convertValue(flowModels, new TypeReference<List<BaseFlowModel>>() {});Optional<BaseFlowModel> first = flowModels.stream().filter(t -> {return t.getAssignee().indexOf(String.valueOf(AuthUtil.getUserId())) != -1;}).findFirst();}
原因分析:
提示:这里填写问题的分析:
例如:打断点调试,发现 map是LinkedHashMap,得到的其实是个map,而不是实体类。
解决方案:
提示:这里填写该问题的具体解决方案:
1、将map转成json,在转成对象(这种方式比较简单,很多json工具方法都有)
2、反序列化成对象
List<BaseFlowModel> flowModels = FeignResultUtil.getDate(iFlowInstanceClient.getTaskDetailByBusinessId(String.valueOf(salePlanVO.getId())));if (null != flowModels) {//在此次对数据进行处理 ObjectMapper mapper = new ObjectMapper();flowModels = mapper.convertValue(flowModels, new TypeReference<List<BaseFlowModel>>() {});//处理ENDOptional<BaseFlowModel> first = flowModels.stream().filter(t -> {return t.getAssignee().indexOf(String.valueOf(AuthUtil.getUserId())) != -1;}).findFirst();}
更多推荐
要你命三千之——BUG养成之路(2020
发布评论