Java ClassCastException: xxx cannot be cast to xxx 问题4种情况解决(Java、EasyPoi、JFreeChart、EasyExcel)
目录
1 问题描述
2 问题分析
2.1 Java
2.2 EasyPoi
2.3 JFreeChart
2.4 EasyExcel
1 问题描述
java.lang.ClassCastException: java.util.HashMap$KeySet cannot be cast to java.util.List
2 问题分析
2.1 Java
1、Set不能直接强转为List,强转会报错。
Map<String, Integer> map= new HashMap<>();
List<String> list= (List<String>) map.keySet();
解决办法:使用new ArrayList()将Set转换为List。
Map<String, Integer> map= new HashMap<>();
List<String> list= new ArrayList(map.keySet());
更多类型之间相互转换请参考以下博客。
java 数组、List、Set互相转化
2.2 EasyPoi
1、使用EasyPoi进行内容替换时,WordExportUtil.exportWord07()第一个传参类型为org.apache.poi.xwpf.usermodel.XWPFDocument,导致转换成cn.afterturn.easypoi.word.entity.MyXWPFDocument报错。
public void replaceContent(HttpServletResponse response) {try {//读文件ClassPathResource cpr = new ClassPathResource("/doc/模板.docx");XWPFDocument document = new XWPFDocument(cpr.getInputStream());//生成文本内容MapMap<String, Object> contentMap = new HashMap<>();contentMap.put("xudongmaster1", "旭东怪1");contentMap.put("xudongmaster2", "旭东怪2");//替换文本内容WordExportUtil.exportWord07(document, contentMap);//返回流response.setHeader("content-type", "application/octet-stream");response.setContentType("application/octet-stream;charset=UTF-8");response.setHeader("Content-Disposition", "attachment; filename=" + new String("模板.docx".getBytes("utf-8"), "ISO-8859-1"));OutputStream outputStream = response.getOutputStream();document.write(outputStream);outputStream.flush();outputStream.close();} catch (Exception e) {e.printStackTrace();}}
解决办法:
WordExportUtil.exportWord07()第一个传参类型改为cn.afterturn.easypoi.word.entity.MyXWPFDocument。
public void replaceContent(HttpServletResponse response) {try {//读文件ClassPathResource cpr = new ClassPathResource("/doc/模板.docx");XWPFDocument document = new MyXWPFDocument(cpr.getInputStream());//生成文本内容MapMap<String, Object> contentMap = new HashMap<>();contentMap.put("xudongmaster1", "旭东怪1");contentMap.put("xudongmaster2", "旭东怪2");//替换文本内容WordExportUtil.exportWord07(document, contentMap);//返回流response.setHeader("content-type", "application/octet-stream");response.setContentType("application/octet-stream;charset=UTF-8");response.setHeader("Content-Disposition", "attachment; filename=" + new String("模板.docx".getBytes("utf-8"), "ISO-8859-1"));OutputStream outputStream = response.getOutputStream();document.write(outputStream);outputStream.flush();outputStream.close();} catch (Exception e) {e.printStackTrace();}}
2.3 JFreeChart
1、使用ChartFactory.createScatterPlot()创建散点图方法获取JFreeChart类型的对象时,不能使用JFreeChart.getCategoryPlot()方法来获取org.jfree.chart.plot.CategoryPlot类型的plot对象,因为plot对象本身是org.jfree.chart.plot.XYPlot类型,而JFreeChart.getCategoryPlot()方法会直接将org.jfree.chart.plot.CategoryPlot类型强转为org.jfree.chart.plot.XYPlot类型,这会直接导致报错。
解决办法:使用JFreeChart.getXYPlot()方法。
2.4 EasyExcel
1、自定义处理器使用了org.apache.poi.xssf.usermodel.XSSFSheet对象,但是传了org.apache.poi.xssf.streaming.SXSSFSheet对象,导致报错。
解决办法:注册处理器之前先调用.inMemory(Boolean.TRUE)方法,这样就会传org.apache.poi.xssf.usermodel.XSSFSheet对象。
ExcelWriter excelWriter = EasyExcel.write(fileOutputStream).inMemory(Boolean.TRUE).registerWriteHandler(new CustomWaterMarkHandler(waterMarkList)).build();
Java ClassCastException: xxx cannot be cast to xxx 问题4种情况解决(Java、EasyPoi、JFreeChart、EasyExcel)相关推荐
- Spring-Data-Redis--解决java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx
原文网址:Spring-Data-Redis--解决java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xx ...
- java.util.LinkedHashMap cannot be cast to xxx.xxx.xxx
/*** 例: List<JavaBean> pojo= (List<JavaBean>) map.get("tableData");* 遇到错误如下:ja ...
- ClassCastException: java.lang.String cannot be cast to com.alibaba.fastjson.JSONObject 的解决办法
问题概述 关于这个问题,是与第三方公司合作,远程调用服务接口时(就相当于调用远程服务提供者)遇到的这个问题," java.lang.ClassCastException: java.lang ...
- java.util.LinkedHashMap cannot be cast to xxx
java.util.LinkedHashMap cannot be cast to com.entity.Person 使用mybatis, resultMap映射的是实体类Person, 查询出来的 ...
- java遍历文件和归类_java读取文件的两种方法:java.io和java.lang.ClassLoader
java读取文件的两种方法:java.io和java.lang.ClassLoader 什么时候使用java.io,什么时候使用java.lang.ClassLoader呢? (注:要是之前读xml文 ...
- 解决java.util.LinkedHashMap cannot be cast to xxx(domain实体类)的问题
一.问题描述 1.最近在做分布式项目,需要用到其他子模块接口方法返回数据,同时这个项目也是前后端分离项目,后台接口返回的格式都是封装好了的json格式,我想拿到其中的data数据,如下图所示: 2.我 ...
- 关于 java.util.LinkedHashMap cannot be cast to xxx错误的解决方案
List<Entity> list = (List<Entity>) result.get("list"); for(Object obj : list){ ...
- redis java.util.LinkedHashMap cannot be cast to XXX
这种问题是 Redis 中取出来的值,强转成我们需要的类型时报错 解决: 比如我们需要转User类 Object obj = valueOperations.get(key); User u = JS ...
- 运行时发现 xxx cannot be cast to xxx
运行时发现 java.lang.ClassCastException: com_mybatis.pojo.User cannot be cast to com_mybatis_config.pojo. ...
最新文章
- java nextline_Java编程语言基础的9根支柱
- 关于AD编程的一些资料
- Linux中mysql的操作
- MySQL安装步骤及相关问题解决
- php运行socket服务器,PHP_php简单socket服务器客户端代码实例,本篇文章分享一个简单的socket - phpStudy...
- Java给定一个字符串数组,判断每个字符出现次数
- C# winform 自定义皮肤制作
- java线程变量值_JAVA线程中对变量值的修改
- [译]用javascript实现一门编程语言-语言构想
- Keras-1 学习Keras,从Hello World开始
- ApacheCN Linux 译文集(二) 20211206 更新
- 修改mslsql服务器端口号,复制服务器安装步骤.doc
- 销毁session的三种方式
- matlab mac 更改语言,MAC让Matlab编辑器显示中文的方法
- 盘点服装进销存软件和生产进销存软件排行榜
- c/c++ hash表 (哈希表、字典表)
- 支付宝对账单接口对接
- 软件测试工程师要具备哪些从业技能?
- 固态硬盘SSD与机械硬盘HDD
- C# ip地址的查询
热门文章
- nginx日志模块ngx_http_log_module源码分析
- 苹果开发者账号可以创建多少测试证书_苹果开发者帐户能创建多少个发布证书...
- gnutls_handshake() failed: A TLS packet with unexpected length was received
- java图片降噪_Java基于opencv实现图像数字识别(四)—图像降噪
- nide-js.nt
- 商丘学院计算机考研,商丘学院院校简介_商丘学院研究生院 - 中国考研网
- STP的端口状态,BPDU,计时器
- 专为小白写的官方win10系统安装教程(U盘装机)
- 在 Ubuntu 16.04上安装 vsFTPd
- Lesson 18 Kaggle医学影像识别 PART 1