3

我正在为我的对象使用谷歌自动值,并且我使用Builder类和create方法来初始化我的对象,那么如何在不再次初始化的情况下编辑我的对象的特定参数?

@AutoValue
public abstract class test implements Parcelable {
public abstract String name();

public abstract int age();

public static test create(String name, int age) {
    return builder()
            .name(name)
            .age(age)
            .build();
}

public static Builder builder() {
    return new AutoValue_test.Builder();
}

@AutoValue.Builder
public abstract static class Builder {
    public abstract Builder name(String name);

    public abstract Builder age(int age);

    public abstract test build();
  }
}

现在在我的代码中,我想更改name属性(t 包含数据):

test t = test.Builder.name("Ali").age(26).build();
/*how to change name value*/ 
4

1 回答 1

4

如果不再次初始化它,您将无法使用@AutoValue注释(值类型对象)编辑对象的特定参数;AutoValue 旨在为您的对象提供这种不变性,因为 AutoValue 的主要目的是在不编写样板代码的情况下创建不可变对象。

如果您想了解有关 AutoValue 的更多信息以及该库旨在实现的目标,以下链接可能会有所帮助:

此外,如果您想用不同的参数值初始化新对象,with-er 库可能很有用。

我希望它有所帮助。

于 2016-10-30T15:00:14.890 回答