0

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

下面这个方法——

newColumnsPredicate

将输入作为String... colNames

下面也是方法签名 -

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

   //Some code

}

下面collection of strings是我想在上述方法中使用的内容-

final Collection<String> attributeNames

所以我决定像这样使用它-

newColumnsPredicate(attributeNames.toString());

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

谁能帮我这个?

4

3 回答 3

5

String... 是一个可变参数。它用于指示参数应该是一个字符串数组,或者任意多个字符串参数。

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

相反,您应该编写一些将您的集合转换为数组的东西,然后将其传入,例如:

attributeNames.toArray(new String[attributeNames.size ()])
于 2013-04-21T20:28:49.107 回答
0

不,当您执行 aattributeNames.toString()时,您将单个 String 传递给该方法,并在它们周围加上一个方括号,例如"[a, b, c]", 您的程序期望在哪里像"a", "b", "c".

于 2013-04-21T20:31:41.733 回答
0

toArray()功能在这里没有用吗?

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

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

编辑:哎呀,没有看到另一个人以同样的方式回答。

于 2013-04-21T20:37:55.337 回答