加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

groovy使用范型的坑

发布时间:2020-12-14 16:33:52 所属栏目:大数据 来源:网络整理
导读:java的范型 MapString,Integer map = new HashMap();map.put("a",100);map.put(1,200); // 在编译期就会报错 上面的代码在运行时,尽管有类型擦除,但是由于编译期有类型检查,map中的key,value的类型始终为String,Integer,可放心使用。 groovy的范型 publi

java的范型

Map<String,Integer> map = new HashMap<>();
map.put("a",100);
map.put(1,200); // 在编译期就会报错

上面的代码在运行时,尽管有类型擦除,但是由于编译期有类型检查,map中的<key,value>的类型始终为<String,Integer>,可放心使用。

groovy的范型

public Map<String,Integer> func() {
    def map = new HashMap<>()
    map.put(‘a‘,100)
    map.put(1,200) // 在编译期不会报错
    map
}

上面的代码即使使用了@CompileStatic静态编译注解在编译期也不会报错。由于在运行时有类型擦除,所以func返回的Map的<key,value>的数据类型是不确定的,key的类型并不一定为String,比如使用map.get(‘1‘)来查询时是获取不到键值对的,这是一个坑点!!!

为了程序的严谨,个人建议使用java的强制类型编码风格,且使用@CompileStatic静态编译注解,改写后的代码如下。

public Map<String,Integer> func() {
    Map<String,Integer> map = new HashMap<>()
    map.put(‘a‘,200) // 在编译期就会报错
    map
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读