读取CSV创建project对象时遇类型转换错误,如何解决?
解决Java中"incompatible types: project cannot be converted to String"错误
错误原因
你遇到的类型不兼容错误,核心问题是数组类型和赋值对象类型不匹配:
- 你定义的
Project数组是String[]类型,但试图将project类的实例赋值给它,Java不允许这种跨类型的赋值。 - 同时代码逻辑存在冗余:每一行CSV数据对应一个
project对象,不需要循环遍历lineSplit的长度——lineSplit里的元素是单个项目的属性,不是多个项目的集合。
修正方案
1. 调整容器类型
将存储项目的容器改为project类型(建议遵循Java命名规范改为Project),推荐使用List而非数组,因为CSV行数通常不确定,List支持动态扩容更灵活。
2. 简化对象创建逻辑
每读取一行CSV,直接创建一个project对象,添加到容器中即可,无需多余循环。
修正后的代码示例
// 需在文件顶部导入:import java.util.ArrayList; import java.util.List; List<project> projectList = new ArrayList<>(); while((line = br.readLine()) != null) { String[] lineSplit = line.split(","); // 一行CSV对应一个project对象,直接传入构造参数 project projectOne = new project( lineSplit[0],lineSplit[1],lineSplit[2], lineSplit[3],lineSplit[4],lineSplit[5]); projectList.add(projectOne); } // 测试输出项目信息 for(project p : projectList) { System.out.println(p); }
3. 优化输出效果(可选)
如果希望System.out.println能打印出对象的具体属性而非内存地址,需要在project类中重写toString()方法:
@Override public String toString() { return "project{" + "属性1='" + 对应类属性名 + '\'' + ", 属性2='" + 对应类属性名 + '\'' + // 依次添加所有构造参数对应的类属性 '}'; }
4. 遵循Java命名规范(推荐)
Java中类名需采用大驼峰命名法,建议将project类名改为Project,变量名采用小驼峰(比如Project数组名改为projects),代码可读性会更高。
内容的提问来源于stack exchange,提问作者Cindy_ l
相关产品推荐
相关产品推荐

