问题描述
Java SE 11的
JLS §5.2包含一些Java 8的JLS没有的新类型转换用例,请参见列表中的项目4和项目5:
分配上下文允许使用以下之一:
- 身份转换
- 不断扩大的原始转换
- 参考范围的扩大
- 参考转换范围扩大,然后取消装箱转换
- 扩展参考转换,然后是拆箱转换,然后是扩展原语转换
- 拳击转换
- 装箱转换,然后是扩大的参考转换
- 拆箱转换
- 取消装箱转换,然后扩展原始转换
我不了解列表中的情况4 和情况5 。谁能给我一些例子的解释?如有可能,还请说明其实际用法。
更新:
与@Naman commented一样,这是更改JLS-JDK-8166326 : 5.2: Allow widening before unboxing的提案,该提案自Java-9开始生效。在报告中,它提到:
此行为对于与捕获的互操作性特别重要:各种现有程序希望能够将
List<? extends Integer>
的元素视为整数。List<? extends Integer> li = null; int i = li.get(0);
这可能意味着JLS更改确实具有实际必要性。但是我还是不明白为什么很重要。 与捕获的互操作性是什么意思,为什么它很重要?这些各种现有程序是什么样的?它们是Java代码吗(我知道其他一些语言也可以在JVM上运行,并且可能与Java代码交互)?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)