我正在尝试创建一个应该接受最小一个和最多两个参数的方法。 第一个参数必须,但第二个是可选的。
我试过了
myFunction(String param1, String param2){
}
但在这种情况下,两个参数都需要传递,这是我不想要的。
myFunction(String... params){
}
在这种情况下,它也可以接受两个以上的参数,这也是我不想要的。
有人可以告诉我是否在java中完成了吗?
答案 0 :(得分:4)
重载方法:
myFunction(String param1){
...
}
myFunction(String param1, String param2){
...
}
考虑使“一个参数版本”使用第二个参数的默认值调用另一个版本以简化操作。
答案 1 :(得分:1)
在这种情况下,由于两个可能的参数都是字符串,您可以重构您的方法以接受字符串数组,然后在方法内部进行验证,例如
void myMethod (String... params) throws IllegalArgumentException {
if (params == null || params.length < 1 ||
params.length > 2 || params[0] == null) {
throw new IllegalArgumentException("wrong no. of arguments");
}
}
答案 2 :(得分:1)
通过重载方法,您可以通过以下方式实现此目的:
void foo(String param1, String param2) {
// your logic here
}
void foo(String param1) {
foo(param1, DEFAULT_VALUE_FOR_PARAM2);
}
请参阅this answer以获取Java中可选参数的完整概述。
答案 3 :(得分:0)
myFunction(param1)
myFunction(para1,param2)
此外,您可以从抽象级别移动相同的逻辑,并在 myFunction()上使用它们。