天之丛云 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 用verilog实现tanh函数和softplus函数
  • ¥15 Hadoop集群部署启动Hadoop时碰到问题
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 QTableWidget重绘程序崩溃
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站