You need to enable JavaScript to run this app. Java对象创建后如何修改关联Third类的name字段无需新建实例
优惠活动
大模型
产品
解决方案
定价
更多

Java对象创建后如何修改关联Third类的name字段无需新建实例

需求说明

你已经完成First、Second、Third三个关联类的定义与实例绑定,当前关联的Third实例name字段值为john,需要在不创建新Third类对象的前提下,将该字段值修改为sam。

现有类定义

First类

public class First {
    List<Second> second;

    public List<Second> getSecond() {
        return second;
    }

    public void setSecond(List<Second> second) {
        this.second = second;
    }
}

Second类

public class Second {
    protected Third third;

    public Third getThird() {
        return third;
    }

    public void setThird(Third third) {
        this.third = third;
    }
}

Third类

public class Third {
    protected String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Third{" +
                "name='" + name + '\'' +
                '}';
    }
}
解决方案

Third类已经提供了public的setName setter方法用于修改name属性,不需要新建Third实例,直接获取已有的Third实例调用该方法赋值即可,有两种实现方式:

  • 方式一:直接使用main方法中已声明的third变量修改
    third.setName("sam");
    
  • 方式二:如果未直接持有third变量,从顶层First实例逐层获取关联对象后修改(符合Java封装规范,推荐)
    first.getSecond().get(0).getThird().setName("sam");
    
修改后完整测试类代码
import java.util.ArrayList;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        Third third = new Third();
        third.setName("john");

        Second second = new Second();
        List<Second> list = new ArrayList<>();
        list.add(second);
        second.setThird(third);
        First first = new First();
        first.setSecond(list);
        // 修改name为sam,以下两种写法二选一即可
        // 写法1
        third.setName("sam");
        // 写法2
        // first.getSecond().get(0).getThird().setName("sam");

        System.out.println(first.getSecond().get(0).getThird().toString());
    }
}

运行后输出结果为:Third{name='sam'},修改生效。

内容的提问来源于stack exchange,提问作者Saurabh Kumar Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 07:45:06