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

Java中LinkedList添加自定义对象时成员值被覆盖问题求助

解决LinkedList中自定义对象属性被批量覆盖的问题

你遇到的问题根源非常明确——day类里的所有属性都被声明为static(静态)。

在Java中,static修饰的成员属于类本身,而非类的某个实例。不管你创建多少个day对象,所有对象都会共享同一个static属性的内存空间。所以你在循环里给dayx.classment赋值时,本质是在修改同一个类级别的变量,最后一次赋值(i=4)会覆盖之前所有的设置,导致所有对象的classment都显示4。

解决步骤

  • 移除day类中所有属性的static修饰符,将它们转为实例变量,这样每个day对象都会拥有独立的属性副本:

修改后的day类代码:

public class day {
    Double startingRest = 0.0, currentRest = 0.0;
    int rownumber = -1, N = 0;
    String date, title;
    int classment;

    public day() {
        rownumber = -1;
        N = 0;
        startingRest = 0.0;
        currentRest = 0.0;
    }
}

修改后效果

重新运行测试代码,每个day对象的classment都会是各自独立的赋值,输出结果会符合你的预期:

0
1
2
3
4

注意事项

static关键字仅适用于需要被所有类实例共享的成员(比如工具方法、全局常量)。如果是每个对象独有的状态数据,绝对不能添加static修饰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:12:25