我试图将新对象作为方法参数传递,并同时设置它的变量。
这是一个不错的解决方案,但又大又不好......
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/