在switch语句中使用自定义类操作ArrayList遇类型兼容问题求助
解决自定义Data类与ArrayList配合的问题
嘿,我来帮你理清这个问题!你的核心困扰在于没有把原始数据封装成Data类的对象,直接往ArrayList里塞字符串/变量,自然会触发类型不兼容或者符号解析错误。下面一步步给你解决:
第一步:正确定义你的Data类
首先要让Data类能容纳你需要的三个数据:车型(E30)、年份(1985)、评分(ratingE30)。我们给它加字段和构造方法,方便初始化数据:
public class Data { // 根据你的数据类型定义字段,这里假设rating是整数,可按需调整 private String model; private String year; private int rating; // 构造方法:用来一次性传入三个数据,创建Data对象 public Data(String model, String year, int rating) { this.model = model; this.year = year; this.rating = rating; } // 可选:添加getter方法,方便后续读取这些数据 public String getModel() { return model; } public String getYear() { return year; } public int getRating() { return rating; } }
第二步:创建Data对象并存入ArrayList
现在你的ArrayList是ArrayList<Data>类型,只能存放Data类的实例。所以你需要先把E30、1985、ratingE30打包成一个Data对象,再添加进去:
// 假设你已经在switch里定义了ratingE30,比如: int ratingE30 = 4; // 示例值,替换成你实际的变量 // 你的public作用域下的ArrayList public ArrayList<Data> dataList = new ArrayList<>(); // 1. 创建Data实例,把三个数据传入构造方法 Data e30Entry = new Data("E30", "1985", ratingE30); // 2. 将实例添加到ArrayList dataList.add(e30Entry);
为什么之前会报错?
- 不加引号写E30报错:编译器会把
E30当成一个变量名,但你并没有定义过这个变量,所以提示“无法解析符号”。必须用引号把它包裹成字符串字面量"E30"。 - 直接塞字符串报错:你的ArrayList泛型是
Data,只能接受Data类型的对象,而"E30"是String类型,类型不匹配,自然会提示兼容问题。
小提示
如果你的ratingE30不是整数(比如是String或double),记得修改Data类里的rating字段类型,以及构造方法的参数类型,保持一致就行。
内容的提问来源于stack exchange,提问作者Alex Maden
相关产品推荐
相关产品推荐

