Java中的Iterator.next()返回类型?

时间:2018-10-10 06:20:04

标签: java list iterator generic-programming

以下代码中出现错误:

Class ABC{
  public <T extends Object> void process(Entity entity){
  List<T> list = entity.getList();
    Iterator<T> iterator = list.iterator();
    while(iterator.hasNext()){
        T currentItem = iterator.next();
        processCurrentItem();
    }
   }
}

执行iterator.next()时发生错误: java.util.LinkedHashMap无法转换为对象

我的问题是特定于我的用例的问题,还是我不了解如何利用哈希图并将其转换为我选择的对象 ?

1 个答案:

答案 0 :(得分:0)

问题(如注释中所阐明的)是存在一个导入的名为Object的类,而不是默认的(java.lang.Object)。因此,T extends Object被解释为“扩展该自定义Object类的类”,而java.util.LinkedHashMap则不这样做。

解决方案是,如果您打算使用默认的java.lang.Object,则删除导入。如果确实需要自定义Object类,则可以将<T extends Object>更改为<T extends java.lang.Object>,也可以将<T>更改为extends java.lang.Object,因为默认是{}。