天之丛云 2014-05-16 14:40
浏览 321
已采纳

Map 类型转换问题

具体情况是这样的:

我一个方法签名是这样的

 

public  void writeSheet(List<Map<String, Object>> data);

 

但是当我 传入一个 List<Map<String,String>> list 时,他却提示参数类型不符, 但是我 又添加一各方法时,却被提示方法已存在

public  void writeSheet(List<Map<String, String>> data);

 我想问下 ,Map中的类型没有 向上兼容的特性吗? 比如 Object通吃一切类型。

 

  • 写回答

6条回答 默认 最新

  • bylijinnan 2014-05-16 16:03
    关注

    (1).数组是协变的,即如果Sub为Super的子类型,那么数组类型Sub[]就是Super[]的子类型;
    泛型是不可变的,即对于任何两个不同类型Type1和Type2,List既不是List的子类型,也不是List的超类型。
    Object[] objectArray = new Long[1];
    objectArray[0] = “I don't fit in”;
    上述代码在编译时没有错误,只有在运行时才会报ArrayStoreException。
    List ol = new ArrayList();
    ol.add(“I don’t fit in”);
    上述代码的第一句就会在编译时报类型不兼容错误。

    详见《Effective Java》

    简单地说,Map不是Map的超类型

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号