如何将泛型类型的元素添加到JAVA中的列表<long>?

时间:2017-10-19 12:40:45

标签: java list generics arraylist

我在这里发布问题的新人,但自昨天以来一直在寻找解决方案,但无法找到。真的很感激帮助。

我有两行,我试图将通用元素放在列表中,并将类型不匹配,以便将Long元素发送到List。

List<Long> returnedPages = m_algo.getElement(Arrays.asList(pageIds));
List<Long> pagesNotInRam = new ArrayList<>();
List<Long> pageIdsToHandle = m_algo.putElement(pagesNotInRam, pagesNotInRam);

定义了m_algo

private IAlgoCache<Long, Long> m_algo;

和IAlgoCache使用泛型类型

public interface IAlgoCache <K, V> {
public V getElement(K key);
public V putElement(K key, V value);}

我可以做这个吗?我应该在某种循环中工作吗?

1 个答案:

答案 0 :(得分:0)

您的代码存在一些问题。例如

public V getElement(K key); // takes an object as an argument (Long in your case)
m_algo.getElement(Arrays.asList(pageIds));  // you pass a list of objects (I suppose longs)

即使您修复了该问题并稍后传递了正确的密钥,您也会尝试将Long对象分配给List。这就是它抱怨的原因 - 分配和对象集合无法完成,因为它们基本上是不同的类型。

List<Long> returnedPages = m_algo.getElement( properKey ); // Problem

尝试:

 List<Long> returnedPages=new ArrayList();
 returnedPages.add(m_algo.getElement( properKey));

putElement的问题是一样的。您只需要区分对象和数组或对象集合。即使它们具有相同的类型,它们也不可互换。