8

我正在尝试将attributeNameswhich is a传递collection of stringsetColumnNames接受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 中将字符串集合转换为字符串数组?任何想法?

4

1 回答 1

10

来自Javadocs 中的集合:

<T> T[] toArray(T[] a)

返回一个包含此集合中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。如果集合适合指定的数组,则在其中返回。否则,将使用指定数组的运行时类型和此集合的大小分配一个新数组。

请注意,此方法接受与集合相同类型的数组;但是,Java 不允许您实例化泛型数组,因此您需要解决它。有关详细信息,请参阅此问题

于 2013-05-28T20:45:44.727 回答