使用构建器模式构建对象时,如何在Java中修改已构建的对象?

Woo*_*ody -1 java builder object

我已经建立了(使用Builder模式)具有三个字段的Employee对象NameAge并且Gender

public class Employee {

    private String name;
    private String age;
    private String gender;

    // Constructor
    private Employee(Builder builder) {
        this.name = builder.name;
        this.age = builder.age;
        this.gender = builder.gender;
    }

    // Employee Builder
    public static class Builder {
        private String name;
        private String age;
        private String gender;

        public Builder name(String name) {
            this.name = name;
            return this;
        }

        public Builder age(String age) {
            this.age = age;
            return this;
        }

        public Builder gender(String gender) {
            this.gender = gender;
            return this;
        }
    }

    // Getters
    public String getName() {
        return name;
    }

    public String getAge() {
        return age;
    }

    public String getGender() {
        return gender;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在在以下课程中,我建立了我的Employee对象,

public class TestEmployee {

    public static void main(String[] args) throws IOException {
        Employee employee = new                Employee.Builder().age("23").gender("Male").name("John").build();

        System.out.println("Name : " + employee.getName());
        System.out.println("Age : " + employee.getAge());
        System.out.println("Gender : " + employee.getGender());
    }
}
Run Code Online (Sandbox Code Playgroud)

如何通过破坏已建立的雇员对象来修改雇员“约翰”的年龄?

仅供参考:我不想出现Setters在我的Employee对象中。

Kay*_*man 6

您想要修改一个不可变的对象。您看到那里的问题了吗?

添加setter(或更改状态的任何方法)或接受对象是不可变的。

您当然可以根据旧对象的值创建一个新对象,但是那时它将不是同一对象。