可以接受一个或两个参数但不超过两个的功能

时间:2017-11-08 08:34:03

标签: java methods

我正在尝试创建一个应该接受最小一个和最多两个参数的方法。 第一个参数必须,但第二个是可选的

我试过了

myFunction(String param1, String param2){

}

但在这种情况下,两个参数都需要传递,这是我不想要的。

myFunction(String... params){
}

在这种情况下,它也可以接受两个以上的参数,这也是我不想要的。

有人可以告诉我是否在java中完成了吗?

4 个答案:

答案 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)

Maby会很好地使用过载方法吗? 创建两个具有相同名称但具有不同属性编号的方法

myFunction(param1)
myFunction(para1,param2)

此外,您可以从抽象级别移动相同的逻辑,并在 myFunction()上使用它们。