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

标签 java

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

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

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/

相关文章:

java - java中如何从URL字符串中获取路径参数

java - 在库文件中发生事件时调用 MainActivity.java 中的方法

java - 无法捕获java中的特定时间段

java - IKVMC runner 类

java - 如何通过 spring mvc 使用 REST API 中的版本?

java - 为什么返回值不等于数组?

java - 如何使用 GridBagLayout 维护 jpanel 的尺寸大小?

java - 树集重复项

java - 用 Java 开发一个简单的插件模块化 rest 可达服务

java - 如何在Java中读写没有某些节点的XML文件