gpt4 book ai didi

java - 修改构建器类创建的对象的属性

转载 作者:太空宇宙 更新时间:2023-11-04 11:26:50 25 4
gpt4 key购买 nike

有一个已经存在的类,一个带有嵌套静态构建器类的 pojo。该项目有两个组件。

组件 A 在使用构建器构建 ObjectX 后发送它。组件B接收它并在组件B的整个生命周期中使用它的属性进行计算。

我的问题是需要更改组件 B 内的 ObjectX 的属性。

在使用构建器方法之前无法完成此操作,因为构建是在组件 A 中进行的。由于实践中没有为构建器设计模式创建的对象使用 setter 方法,因此解决此问题的方法是什么。仅供引用,对象 x 的模型位于组件 B 内。由于组件 A 将通过部署中的 Jars 提供可用的组件 B 代码,因此可以更改 ObjectX 模型来完成它。我只是想知道这是否是正确的方法。

class ComponentA{


CallingMethodofComponenentB( new objectXBuilder().setName("B).setAge(5).build());

}
<小时/>
class ComponenetB {

receivingObjectXMethod(ObjectX x){

println(x.getName() + x.getAge());
}

Class ObjectX{

private ObjectX(ObjectXBuilder builder){
this.name = builder.getName();
this.age = builder.getAge();
}

// Getters ...

public static class ObjectXBuilder{

private String name;
private int age

// Setters ...


ObjectXBuilder(String name, int age){
this.name = name;
this.age = age;
}

ObjectX build(){
return new ObjectX(this);
}
}
<小时/>

需求是根据组件B端的逻辑更改年龄。这应该在构建器类中完成,还是应该有一个 ObjectX 的 setter?

最佳答案

ObjectXBuilder 添加方法 copyOf(ObjectX),以便能够使用现有对象初始化构建器。

ObjectX other = new ObjectXBuilder().copyOf(objectX).setAge(42).build();

关于java - 修改构建器类创建的对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44267216/

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