![](/img/trans.png)
[英]How to show different Message for different input length in EditText?
[英]How to use a Builder for different length of input?
我正在使用 Builder(pattern) 來構建並返回 object。 根據可用 arguments 的數量,定義了如何調用方法的順序。 目前我使用 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();
}
}
你真的不需要像 function 參考這樣的花哨的東西。 您所要做的就是中斷構建器調用:
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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.