繁体   English   中英

Generic 中 jdk7 和 jdk8 有什么区别?

[英]what's the difference between jdk7 & jdk8 in Generic?

List<String> box = new ArrayList<>();
box.add("small");
box.addAll(new ArrayList<>());

在 jdk7 box.addAll(new ArrayList<>())不会编译,但在 jdk8 中会

任何人都可以帮助我了解 Generic 中 jdk7 和 jdk8 之间的区别?

不同之处在于 Java 8 引入了多表达式

这些表达式的类型有些未确定,但由表达式使用方式的上下文决定。

new ArrayList<>()是一个多表达式。 就其本身而言,它可以是具有任何元素类型的列表:编译器在决定类型之前“等待并查看”。

Java 7 不支持多表达式。 它会将new ArrayList<>()视为new ArrayList<Object>() ,因此与box.addAll不兼容。

如果没有多表达式,lambdas 和流会非常笨拙。

这就是改进后的类型推断JEP101 它推断空列表的通用类型。 具体来说,这是在论证位置添加推理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM