You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:50:15