[英]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.