将字符串集合传递给(String ... values)

时间:2013-04-21 20:25:57

标签: java string collections

我有一个非常简单的问题。

以下方法 -

newColumnsPredicate

将输入视为String... colNames

以下是方法签名 -

public static SlicePredicate newColumnsPredicate(String... colNames) {

   //Some code

}

我想要在上面的方法中使用collection of strings以下 -

final Collection<String> attributeNames

所以我决定使用这样的东西 -

newColumnsPredicate(attributeNames.toString());

这是正确的方法吗?在我运行我的程序之后,我没有得到任何数据,所以我怀疑我添加的方式可能是错误的。

任何人都可以帮我吗?

3 个答案:

答案 0 :(得分:5)

String ...是一个vararg参数。它用于指示参数应该是字符串数组,或者是您喜欢的多个String参数。

对集合调用toString()只返回一个字符串,该字符串组合了它包含的所有字符串。

您应该编写将您的集合转换为数组的内容,然后将其传递给,如:

attributeNames.toArray(new String[attributeNames.size ()])

答案 1 :(得分:0)

不,当您执行attributeNames.toString()时,您将一个字符串传递给该方法,并在其周围加上一个方括号,如"[a, b, c]",您的程序需要{{1} }。

答案 2 :(得分:0)

toArray() function不会在这里有用吗?

public void test() {
    Collection<String> collection = new HashSet<>();
    newColumnsPredicate(collection.toArray(new String[collection.size()]));
}

public static SlicePredicate newColumnsPredicate(String... colNames) {
    //stuff
}

编辑: 哎呀,没看到其他人以同样的方式回答。