我使用构建器模式来创建一个对象。问题是我必须从命令行获取参数。我想传递一到六个参数,并根据参数数量调用相关方法。
例如,如果我传递 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/