集合泛型定义问题怎么理解?
List list = new ArrayList<Integer>();//为什么能添加任何类型List<String> list = new ArrayList<>();//只能添加String类型
回复
1个回答

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加入的语法糖,类型推断
回复

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