在java中创建对象后更改对象字段

在java中创建对象后更改对象字段,java,Java,我有三个类第一,第二,第三,第三个类有一个字段名,我正在创建一个三个类的对象,现在在创建对象之后,我想将第三个类字段的名称从“john”更改为“sam”,如何在不创建新的第三个类对象的情况下更新它 public class First { List<Second> second; public List<Second> getSecond() { return second; } public void setSec

我有三个类第一,第二,第三,第三个类有一个字段名,我正在创建一个三个类的对象,现在在创建对象之后,我想将第三个类字段的名称从“john”更改为“sam”,如何在不创建新的第三个类对象的情况下更新它

  public class First {
    List<Second> second;

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

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

试验

公共类测试{
公共静态void main(字符串[]args){
第三个=新的第三个();
第三,设置名称(“约翰”);
第二秒=新的第二秒();
列表=新的ArrayList();
列表。添加(第二);
第二,第三(三);
第一个=新的第一个();
第一。第二(列表);
//如何设置将第三个对象名称从john更改为Sam
System.out.println(first.second.get(0.third.toString());
}
}

当您首先拥有
类的实例时,您可以使用getter获取所需对象,然后将其用于字段:

first.getSecond().get(0).getThird().setName("Sam");

p.S.这是不安全的,因为您可以获得
NPE
或例如
second
列表可能为空。

您将名称更改为Sam的方式与将其更改为“john”的方式相同:
third.setName(“Sam”)在真实代码中,我没有权限设置字段如果您没有权限设置字段,则不要设置它们!开发人员没有给您访问权限是有原因的。请检查更新的问题
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 + '\'' +
                '}';
    }
}
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);
         // How can I set change Third object name from john to Sam

        System.out.println(first.second.get(0).third.toString());

    }
}
first.getSecond().get(0).getThird().setName("Sam");