我在这里发布问题的新人,但自昨天以来一直在寻找解决方案,但无法找到。真的很感激帮助。
我有两行,我试图将通用元素放在列表中,并将类型不匹配,以便将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);}
我可以做这个吗?我应该在某种循环中工作吗?
答案 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的问题是一样的。您只需要区分对象和数组或对象集合。即使它们具有相同的类型,它们也不可互换。