簡體   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