使用Setter方法填充大量参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Setter方法填充大量参数相关的知识,希望对你有一定的参考价值。

我正在使用POJO创建和获取数据。这些POJO代表我们的API,我们使用它们通过REST保证进行测试。

我有一个带有30个变量的RequestDTO类。由于这是DTO,因此我在课堂上使用30个setter方法来更新其中的值。

我通过方法链接将这些设置方法称为如下。我正在使用varList变量从csv读取数据并提供给此DTO。

然而,这看起来笨拙,可读性较差且不正确。我想知道什么是好的方法/设计模式。因为我对最佳做法和设计模式的了解还很少。

示例代码:

    public static void setRequestDTO(List<Object> varList) {
        MyRequestDTO myrequest = new MyRequestDTO()
            .setkey1(varList.get(0).toString())
            .setkey2(varList.get(1).toString())
            // ........
            .setkey30(varList.get(30).toString());
    }
答案

首先,我相信您的DTO太肿-难道没有[[真正您可以将其分解为较小的类吗?

第二,您使用的是List<Object>,但所有示例均显示您使用的是String值-您有可能可以更改列表的类型参数,从而消除对所有[C0 ]电话?

第三,您在很大程度上取决于.toString,其中包含您要在DTO上设置的所有必要元素

和,它们都是正确的顺序。如果元素太少,这将导致引发异常。

最后,虽然我会考虑重构它,但我会给您一个可以继续进行的想法。如果确定要保留当前的DTO结构,请考虑将List放入List<Object>的构造函数中,然后在其中执行所有设置程序。这样,每当实例化此DTO的新实例时,您就没有30行设置程序,而仅在实例化时设置这些值。

以上是关于使用Setter方法填充大量参数的主要内容,如果未能解决你的问题,请参考以下文章

在一些片段之间填充对象变量的最佳方法

Spring中的转换服务

还在手写 Getter/Setter 方法吗?Lombok 让你的代码更简洁!

坚持创建 Setter 方法

BootStrap有用代码片段(持续总结)

我们可以为 dart setter 方法使用多个参数吗?