在Java中,将未知数量的字符串传递给函数的最佳方法是什么?

7
我想在Java中向函数传递不同数量的字符串,这些字符串应该用于过滤查询,可以是2-4个字符串。
您认为最好的方法是什么?
a)为相同的函数创建具有不同参数数量的重载? b)创建一个字符串数组的新实例并将其传递给函数?
还有其他更好的方法吗?
谢谢
3个回答

11

1.5 版本开始,Java 支持可变参数列表:

public void myMethod(String... values)
{
    for (String val : values)
    {
        // do something
    }
}

规则很简单:

  • 可变参数必须是方法签名中的最后一个参数。
  • 它只有一个参数,因此所有值都将是相同类型的。
  • 在方法内部,可变参数似乎是一个数组。
  • 调用方法时,可以传递单个值或数组。

太好了,谢谢!你需要传递至少一个参数吗?还是有可能数组为空? - Doron Sinai
1
@Doron - 不,如果你不传递任何参数,你将得到一个空数组。 - Anon
如果你想确保永远不会调用无参版本,你可以使用以下签名:public void myMethod(String value, String... values) 然后在处理 values 之前先处理 value。 - laz

0

创建重载(a)的优点是,如果您传递错误数量的字符串,您将在编译时获得错误提示。

或者,您可以使用 varargs


1
你不觉得写三遍同样的函数会浪费代码吗? - Doron Sinai
@Doron Sinai:其中两个可以变得微不足道,例如传递null而不是缺失的参数。这类似于具有优缺点的望远镜构造器模式。 - vitaut

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接