gpt4 book ai didi

java - 如何在每次修改旧对象时返回一个新对象?

转载 作者:行者123 更新时间:2023-12-02 02:56:13 25 4
gpt4 key购买 nike

一些代码:

public class Person {

private Person(Builder builder) {
//construct the person object
}

public static class Builder {
public Builder withName(String name) {
this.name = name;
return this;
}
public Builder withAge(int age) {
this.age = age;
return this;
}
public Builder withPhone(int phone) {
this.phone = phone;
return this;
}

//How to add this method?
public Builder withPerson(Person person) {
this.person = person;
return this;
}

public Person build() {
return new Person(this);
}
}
}

所以基本上我有一个对象,在本例中是一个有构建器的人。现在假设我最初构建的人只有 name和一个age并获取对象PersonOne 。现在我想要对象 PersonOne是一成不变的。所以如果我想添加 phonePersonOne我想让它返回 PersonTwo其中包含 PersonOne 的一切还有新的 phone 。所以,每次我修改 Person对象我得到一个新的对象,而旧的对象保持不变。我不知道如何在 java 中完成这项工作,而不只是盲目地复制 Person 的所有现有属性。对象转换为一个新对象,然后添加新属性并返回一个新的 Person 。我不想这样做,因为我拥有的对象有很多属性和很多 if条件会使代码看起来很糟糕。有更好的方法吗?

最佳答案

你有一个构建器,所以只需使用它(比 Marko Topolnik 的答案更简洁):

public class Person {
public PersonBuilder copy() {
return new PersonBuilder()
.withName(this.name)
.withAge(this.age)
.withPhone(this.phone);
}

public Person changeName(String name) {
return copy().withName(name).build();
}

public Person changeAge(int age) {
return copy().withAge(age).buid();
}
}

关于java - 如何在每次修改旧对象时返回一个新对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32250953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com