我有一个非常简单的问题。
以下方法 -
newColumnsPredicate
将输入视为String... colNames
以下是方法签名 -
public static SlicePredicate newColumnsPredicate(String... colNames) {
//Some code
}
我想要在上面的方法中使用collection of strings
以下 -
final Collection<String> attributeNames
所以我决定使用这样的东西 -
newColumnsPredicate(attributeNames.toString());
这是正确的方法吗?在我运行我的程序之后,我没有得到任何数据,所以我怀疑我添加的方式可能是错误的。
任何人都可以帮我吗?
答案 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
}
编辑: 哎呀,没看到其他人以同样的方式回答。