java - Java SE 11 - Java 语言规范中类型转换的新案例
问题描述
Java SE 11 的JLS §5.2包含一些 Java 8 的 JLS 没有的新类型转换案例,请参见列表中的第 4 项和第 5 项:
赋值上下文允许使用以下之一:
- 身份转换
- 扩大的原始转换
- 扩大参考转换
- 扩大参考转换,然后进行拆箱转换
- 一个扩大的参考转换,然后是一个拆箱转换,然后是一个扩大的原始转换
- 拳击转换
- 拳击转换,然后是扩大的参考转换
- 拆箱转换
- 拆箱转换,然后是扩大的原始转换
我不明白列表中的案例 4和案例 5。谁能用例子给我一些解释?如果可能的话,还请解释一下它的实际用法。
更新:
正如@Naman评论的那样,这是更改 JLS - JDK-8166326 的建议:5.2:允许在拆箱前扩大范围,这在 Java-9 之后就生效了。在报告中,它提到:
这种行为对于与 capture 的互操作性尤为重要:各种现有程序都希望能够将 a 的元素
List<? extends Integer>
视为整数。List<? extends Integer> li = null; int i = li.get(0);
这可能暗示这种JLS的改变确实有实际的必要性。但是我还是不明白为什么<? extends Integer> 很重要。与捕获的互操作性是什么意思,为什么它很重要?这些不同的现有程序是什么样的?它们是 Java 代码吗(我知道其他一些语言也可以在 JVM 上运行,并且可能与 Java 代码有交互)?
解决方案
推荐阅读
- powershell - 如何从注册表项安静地运行 powershell?
- elasticsearch - ElasticSearch 不得(必须(A 和 A 和 C)或(D 和 E 和 F)
- database - Oracle RDS中如何连接多个Schema
- c# - 调试器中的 Visual Studio @ 符号前缀
- django - Django删除多对多字段
- python - 将 XML 转换为 csv 时出现 KeyError
- linux-kernel - Linux 内核 Intel 视频驱动程序 (i915) 版本之间的背光亮度差异
- ios - 使用 REGEX 快速密码验证
- python - 如何打乱熊猫数据框的每一列?
- react-native - 如何在 react-native 中创建嵌套的故事书结构?