【问题标题】:Class List<Map> cannot be converted to Collection<objects>类 List<Map> 无法转换为 Collection<objects>
【发布时间】:2017-02-07 10:15:42
【问题描述】:

这可能是一个非常愚蠢的问题,我有一个java代码如下:

public Collection<Object> getCollection(){
     List<Map<String,Object> listMap = getListMap();
     return listMap;
}

我得到一个例外说

cannot assign a value of Java.util.list<java.util.map<java.lang.String,java.lang.Object>>  
to java.util.Collection<java.lang.Object> 

当然错误必须是有效的,但这是为什么呢?我该如何克服呢?

【问题讨论】:

标签: java list generics collections


【解决方案1】:

使用泛型时,避免使用对Object 的引用。而是使用通配符? 例如,在您的情况下,将Collection&lt;Object&gt; 更改为Collection&lt;?&gt;

所以你的方法变成了,

public Collection<?> getCollection(){
     List<Map<String,Object>> listMap = getListMap();
     return listMap;
}

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    将您的方法签名更改为Collection&lt;Map&lt;String,Object&gt;&gt;

     public Collection<Map<String,Object>> getCollection(){
         List<Map<String,Object>> listMap = getListMap();
         return listMap;
    }
    

    【讨论】:

      【解决方案3】:

      本材料将有助于理解泛型继承: Java Documentation . 试试这个(它应该可以正常工作):

      public Collection<Object> getCollection() {
          return new ArrayList<>(getListMap());
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-06
        • 2015-12-18
        • 1970-01-01
        • 1970-01-01
        • 2016-04-08
        • 2021-03-27
        • 1970-01-01
        • 2016-11-01
        相关资源
        最近更新 更多