博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java SE 7新特性:创建泛型实例时自动类型推断
阅读量:6927 次
发布时间:2019-06-27

本文共 756 字,大约阅读时间需要 2 分钟。

转自:

在以前的版本中使用泛型类型,需要在声明并赋值的时候,两侧都加上泛型类型。例如:
Map<String, String> myMap = new HashMap<String, String>();
不过,在Java SE 7中,这种方式得以改进,现在你可以使用如下语句进行声明并赋值:
Map<String, String> myMap = new HashMap<>(); //注意后面的"<>"
在这条语句中,编译器会根据变量声明时的泛型类型自动推断出实例化HashMap时的泛型类型。再次提醒一定要注意new HashMap后面的「<>」,只有加上这个「<>」才表示是自动类型推断,否则就是非泛型类型的HashMap,并且在使用编译器编译源代码时会给出一个警告提示。
注意:Java SE 7在创建泛型实例时的类型推断是有限制的,你只能在联系上下文可以明确确定参数化类型的时候使用泛型推断。例如:下面的例子无法正确编译:
List<String> list = new ArrayList<>();
list.add("A");
// 由于addAll期望获得Collection<? extends String>类型的参数,因此下面的语句无法通过
list.addAll(new ArrayList<>());
与上面的例子相比,下面的这个例子可以通过编译:
List<String> list = new ArrayList<>();
list.add("A");
List<? extends String> list2 = new ArrayList<>();
list.addAll(list2);

转载于:https://blog.51cto.com/13545923/2053468

你可能感兴趣的文章
Android系统中的广播(Broadcast)机制简要介绍和学习计划
查看>>
Properties 配置文件的读取
查看>>
[后缀数组、不重复子串]SPOJ694、spoj705--Distinct Substrings
查看>>
Mac OS X 10.8.3搭建Android工程源码的编译环境(解决找不到GCC、GIT、PYTHON的问题)...
查看>>
ruby/python/java全覆盖的Selenium-Webdriver系列教程(2)————浏览器的简单操作
查看>>
logcat
查看>>
实验五 含有控制信号的计数器VHDL设计
查看>>
ExtJs 通过分析源代码解决动态加载Controller的问题
查看>>
字符串相似度算法 递归与动态规划求解分析
查看>>
同步博客到CSDN
查看>>
VMware vSphere 服务器虚拟化之二十八 桌面虚拟化之安装View传输服务器
查看>>
用友CDM系统,将货位间商品移库单(一步)修改为内调出入库单(一步)方法使用...
查看>>
(Problem 14)Longest Collatz sequence
查看>>
Oracle中 Package与Package body的介绍
查看>>
解决设置redmineblacklog的按钮无效问题
查看>>
为阿里云存储开发的PHP PEAR 包:Services_Aliyun_OSS
查看>>
2013人人网校园招聘笔试题
查看>>
SqlServer基础:Bit类型
查看>>
挖财_百度百科
查看>>
MySql 日期格式化函数date_format()
查看>>