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

Java ArrayList存入对象后读取仅返回最后一个值问题咨询

问题根源

你全程仅实例化了1个SubCategory对象,Java中ArrayList的add()方法存入的是对象的引用(即内存地址),而非对象的独立副本。你每次修改temp的属性时,改动的都是堆内存中唯一的那一个SubCategory实例,列表中所有指向该实例的引用读取到的内容自然会同步更新,最终所有元素都显示最后一次修改后的属性值。

修复方案

每次往列表添加元素前,单独创建新的SubCategory实例即可:

ArrayList <SubCategory> list = new ArrayList<>();

// 第一次新增创建新对象
SubCategory temp = new SubCategory();
temp.setId(SF_DIRECT);
temp.setName(R.string.spell_subcategory_direct);
list.add(temp);

// 第二次新增重新实例化
temp = new SubCategory();
temp.setId(SF_INDIRECT);
temp.setName(R.string.spell_subcategory_indirect);
list.add(temp);

// 第三次新增重新实例化
temp = new SubCategory();
temp.setId(SF_ELEMENTAL);
temp.setName(R.string.spell_subcategory_elemental);
list.add(temp);

内容的提问来源于stack exchange,提问作者Lazale

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 04:51:01