集合泛型定义问题怎么理解?

作者站长头像
站长
· 阅读数 9

List list = new ArrayList<Integer>();//为什么能添加任何类型List<String> list = new ArrayList<>();//只能添加String类型

回复
1个回答
avatar
test
2024-07-11
List list = new ArrayList<Integer>();//为什么能添加任何类型

泛型只是在编译期检查类型,在运行时泛型已经不存在了,这个写法是在实例化的时候声明了泛型,但是赋值给list的时候泛型丢弃了,因为list的声明类型是 List,List本身不带泛型相当于List<Object>或者 List<?> 所以可以添加任何类型

List<String> list = new ArrayList<>();//只能添加String类型

这个写法相当于List<String> list = new ArrayList<String>();,只是java8时加入的一个简化写法而已,效果是一样的

修正:是java7加入的语法糖,类型推断

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容