gpt4 book ai didi

java - 在方法参数中使用 setter 传递新对象

转载 作者:行者123 更新时间:2023-11-30 01:49:30 25 4
gpt4 key购买 nike

我试图将新对象作为方法参数传递,并同时设置它的变量。

这是一个不错的解决方案,但又大又不好......

EventBox evtbox = new EventBox();
evtbox.setFloorColor(floorColor);
scriptUtils.runScript("sc-cfrmd",evtbox);

我需要这样的东西来缩短它

scriptUtils.runScript("sc-cfrmd",new EventBox().setFloorColor(floorColor)); 

当然,这样做的逻辑方法只是在 EventBox 类中创建一个构造函数,但我需要找出不使用构造函数的方法。

感谢任何提示

最佳答案

您正在寻找fluent interface通常,当您需要创建复杂的对象时,您正在使用 builder design pattern 实现流畅的接口(interface)例如:

import java.awt.Color;

public class EventBox {

private Color floorColor;

private EventBox() {
this.floorColor = null;
}

public Color getFloorColor() {
return floorColor;
}

private void setFloorColor(Color floorColor) {
this.floorColor = floorColor;
}

public static EventBoxBuilder builder() {
return new EventBoxBuilder();
}

public static class EventBoxBuilder {
private final EventBox box;

EventBoxBuilder() {
this.box = new EventBox();
}

public EventBoxBuilder setFloorColor(Color color) {
box.setFloorColor(color);
return this;
}

public EventBox build() {
return box;
}
}
}
....
scriptUtils.runScript("sc-cfrmd",EventBox.builder().setFloorColor(floorColor).build());

如果您能够使用Lombok Framwork ,这样的构建器可以通过添加 @Builder 在编译时自动生成。 EventBox 类的注释

关于java - 在方法参数中使用 setter 传递新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56558358/

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