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

Java调用ArrayList.add()后列表全被最后一个对象覆盖问题求解

问题根因

你遇到的问题是错误使用static修饰符修饰类成员属性导致的。

static修饰的成员变量属于类全局共享属性,全类所有实例共用同一份内存地址存储该值:每次对静态变量赋值都会覆盖全局的值,所有该类的实例读取该属性时,都会拿到最新的赋值结果。

你的Letter类中的content属性被定义为静态变量,所以每次调用构造方法new Letter(xxx)给content赋值时,所有已经创建的Letter实例的content都会同步变成新赋值的值,自然就出现了添加新对象时整个列表的属性都被覆盖的现象。

修复方案

去掉Letter类中content属性的static修饰符即可,修改后的Letter类代码如下:

public class Letter{
    // 去掉static修饰,改为实例私有属性
    private char content; 
    private boolean guessed = false;
    public Letter(char content){
        this.content = content;
    }
    public char getContent(){
        return this.content;
    }
}

修改后每个Letter实例都会持有独立的content属性,赋值不会互相影响,转换方法的运行结果就符合预期了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:42:02