方法中的java可选参数

我想创建一个需要1个参数和1个可选参数的方法,但是我发现如何通过在参数(int ... b)中创建一个可选数组,但这是针对数组的,我想使它只是这个值为空或用户输入它,我可以通过使两个同名的方法,但一个与单个参数,一个与2个参数,但它可以用只有一个方法?

谢谢


不,Java不支持可选参数。 重载的另一种替代方法(对两个参数没有太大意义,但对于更多的参数确实有意义)是使用表示所有参数的构建器类型 - 您可以为构建器提供包含所需参数的构造器,然后每个选项都有一个setter,使得setter自己返回构建器。 因此调用该方法变得如下所示:

foo.doSomething(new ParameterBuilder(10).setBar(2).setBaz(10));

你正在寻找的是默认参数支持。 Java没有这种能力,但它或多或少地模拟了这种能力。

一种简单的方法是使用方法重载。

另一种方法是直接识别特殊情况,然后替换默认值。

以下是Ivo Limmen将这两种方法混合使用的示例:

public void test() {
   this.test(null, null);
}
public void test(String p1) {
   this.test(null, null);
}
public void test(String p1, String p2) {
   if(p1 == null) {
      ...
   } else {
      ...
   }
   if(p2 == null) {
      ...
   } else {
      ...
   }
}

我发现一个非常有趣的方法是使用Design Builder模式。 这里有一个例子

这里也有一个有趣的讨论


不,这正是重载的方法

链接地址: http://www.djcxy.com/p/20875.html

上一篇: java optional parameter in methods

下一篇: Using an ArrayList as Parameter of Constructor