java - 如何使用不同数量的命令行参数构建对象?

标签 java arrays command-line builder builder-pattern

我使用构建器模式来创建一个对象。问题是我必须从命令行获取参数。我想传递一到六个参数,并根据参数数量调用相关方法。
例如,如果我传递 3 个参数,程序将调用前三个方法; 4 个参数的前四种方法,依此类推;

ExampleClass obj = new ExampleClass.Builder()
                .method1(args[0])
                .method2(args[1])
                .method3(args[2])
                .build();
甚至有可能有效地制作它吗?我唯一想到的是反射(reflection),但我不确定这是否是个好主意。

最佳答案

诀窍是将方法调用链分解为单独的语句,而不是尝试在一个语句中完成所有操作。将中间构建器对象保存在临时变量中,然后调用 build()在末尾。

ExampleClass.Builder builder = new ExampleClass.Builder();

if (args.length >= 1) { builder = builder.method1(args[0]); }
if (args.length >= 2) { builder = builder.method2(args[1]); }
if (args.length >= 3) { builder = builder.method3(args[2]); }
if (args.length >= 4) { builder = builder.method4(args[3]); }
if (args.length >= 5) { builder = builder.method5(args[4]); }
if (args.length >= 6) { builder = builder.method6(args[5]); }

ExampleClass obj = builder.build();

关于java - 如何使用不同数量的命令行参数构建对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64685550/

相关文章:

java - Android - 不同时保留原始列表数组吗? java

java - 尝试将 XML 映射到 POJO 时出现 "unexpected element"

java - Android给ImageView添加边框图片

java - 如何多次打印一个数组?

command-line - 如何从 Go 运行 CLI 命令?

java - 如何在 Eclipse 中为 Java 代码禁用智能缩进?

java - 为什么子弹射程大于1000

C 程序在不使用 string.h 库的情况下检索两个字符之间的文本

java - 使用linux脚本,如何在java源文件中添加或替换package语句

c++ - 通过命令行以编程方式运行程序