如何针对不同长度的输入使用 Builder?
How to use a Builder for different length of input?
我正在使用 Builder(模式)构建和 return 一个对象。根据关于如何调用方法的可用参数的数量,有一个定义的顺序。目前我使用 if-else 块。是否有 java 8 或更高版本的替代方案来动态使用构建器?
public Task createTask(String[] params){
if(params.length < 1){
throw new IllegalArgumentException();
}
else if(params.length == 1){
return new TaskBuilder().setOne(params[0]).build();
}
else if(params.length == 2){
return new TaskBuilder().setOne(params[0])
.setTwo(params[1]).build();
}
else if(params.length == 3){
return new TaskBuilder().setOne(params[0])
.setTwo(params[1])
.setThree(params[2]).build();
}
else if(params.length == 4){
return new TaskBuilder().setOne(params[0])
.setTwo(params[1])
.setThree(params[2])
.setFour(params[3]).build();
}
else if(params.length == 5){
return new TaskBuilder().setOne(params[0])
.setTwo(params[1])
.setThree(params[2])
.setFour(params[3])
.setFive(params[4]).build();
}
else{
throw new IllegalArgumentException();
}
}
您真的不需要像函数引用这样的花哨的东西。您所要做的就是中断构建器调用:
public Task createTask(String[] params){
if (params.length < 1 || params.length > 5) {
throw new IllegalArgumentException();
}
TaskBuilder builder = new TaskBuilder();
if (params.length >= 1) { builder = builder.setOne(params[0]); }
if (params.length >= 2) { builder = builder.setTwo(params[1]); }
if (params.length >= 3) { builder = builder.setThree(params[2]); }
if (params.length >= 4) { builder = builder.setFour(params[3]); }
if (params.length >= 5) { builder = builder.setFive(params[4]); }
return builder.build();
}
我正在使用 Builder(模式)构建和 return 一个对象。根据关于如何调用方法的可用参数的数量,有一个定义的顺序。目前我使用 if-else 块。是否有 java 8 或更高版本的替代方案来动态使用构建器?
public Task createTask(String[] params){
if(params.length < 1){
throw new IllegalArgumentException();
}
else if(params.length == 1){
return new TaskBuilder().setOne(params[0]).build();
}
else if(params.length == 2){
return new TaskBuilder().setOne(params[0])
.setTwo(params[1]).build();
}
else if(params.length == 3){
return new TaskBuilder().setOne(params[0])
.setTwo(params[1])
.setThree(params[2]).build();
}
else if(params.length == 4){
return new TaskBuilder().setOne(params[0])
.setTwo(params[1])
.setThree(params[2])
.setFour(params[3]).build();
}
else if(params.length == 5){
return new TaskBuilder().setOne(params[0])
.setTwo(params[1])
.setThree(params[2])
.setFour(params[3])
.setFive(params[4]).build();
}
else{
throw new IllegalArgumentException();
}
}
您真的不需要像函数引用这样的花哨的东西。您所要做的就是中断构建器调用:
public Task createTask(String[] params){
if (params.length < 1 || params.length > 5) {
throw new IllegalArgumentException();
}
TaskBuilder builder = new TaskBuilder();
if (params.length >= 1) { builder = builder.setOne(params[0]); }
if (params.length >= 2) { builder = builder.setTwo(params[1]); }
if (params.length >= 3) { builder = builder.setThree(params[2]); }
if (params.length >= 4) { builder = builder.setFour(params[3]); }
if (params.length >= 5) { builder = builder.setFive(params[4]); }
return builder.build();
}