groovy使用范型的坑
java的范型
Map map = new HashMap<>();
map.put("a", 100);
map.put(1, 200);
// 在编译期就会报错
上面的代码在运行时,尽管有类型擦除,但是由于编译期有类型检查,map中的
groovy的范型
public Map func() {
def map = new HashMap<>()
map.put('a', 100)
map.put(1, 200) // 在编译期不会报错
map
}
上面的代码即使使用了
@CompileStatic
静态编译注解在编译期也不会报错。由于在运行时有类型擦除,所以func返回的Map的【groovy使用范型的坑】为了程序的严谨,个人建议使用java的强制类型编码风格,且使用
@CompileStatic
静态编译注解,改写后的代码如下。public Map func() {
Map map = new HashMap<>()
map.put('a', 100)
map.put(1, 200) // 在编译期就会报错
map
}
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件
- android|android studio中ndk的使用
- 使用协程爬取网页,计算网页数据大小