我正在尝试将attributeNames
collection of string
传递给接受setColumnNames
的方法string array
。
public Map<String, String> getAttributes(String rowKey, Collection<String> attributeNames, String columnFamily) {
try {
SliceQuery<String, String, String> query = HFactory.createSliceQuery(keyspace, StringSerializer.get(), StringSerializer.get(), StringSerializer.get()).
setKey(rowKey).setColumnFamily(columnFamily).setColumnNames(attributeNames);
} catch (HectorException e) {
LOG.error("Exception in CassandraHectorClient::getAttributes " +e+ ", RowKey = " +rowKey+ ", Attribute Names = " +attributeNames);
}
return null;
}
setColumnNames
SliceQuery<K, N, V> setColumnNames(N... columnNames);
我每次都会收到这个例外 -
The method setColumnNames(String...) in the type SliceQuery<String,String,String> is not applicable for the arguments (Collection<String>)
如何在Java中将字符串集合转换为字符串数组?有什么想法吗?
答案 0 :(得分:10)
来自Javadocs中的Collection:
<T> T[] toArray(T[] a)
返回包含此集合中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。如果集合适合指定的数组,则返回其中。否则,将使用指定数组的运行时类型和此集合的大小分配新数组。
请注意,此方法接受与集合相同类型的数组;但是,Java不允许您实例化通用数组,因此您需要解决它。有关详细信息,请see this question。