From dfa077245bae741398de561fba402a024fb12f30 Mon Sep 17 00:00:00 2001
From: haiqiang <43314997+Goose9527@users.noreply.github.com>
Date: Tue, 12 Mar 2019 23:42:34 +0800
Subject: [PATCH] =?UTF-8?q?Create=20=E6=94=B9=E8=BF=9B=E7=9A=84=E7=B1=BB?=
=?UTF-8?q?=E5=9E=8B=E6=8E=A8=E6=96=AD.md?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 与README.md同步
---
.../改进的类型推断.md | 30 +++++++++++++++++++
1 file changed, 30 insertions(+)
create mode 100644 Java/What's New in JDK8/改进的类型推断.md
diff --git a/Java/What's New in JDK8/改进的类型推断.md b/Java/What's New in JDK8/改进的类型推断.md
new file mode 100644
index 00000000..b5cff7bb
--- /dev/null
+++ b/Java/What's New in JDK8/改进的类型推断.md
@@ -0,0 +1,30 @@
+## 改进的类型推断
+### 1.什么是类型推断
+类型推断就像它的字面意思一样,编译器根据你显示声明的已知的信息 推断出你没有显示声明的类型,这就是类型推断。
+看过《Java编程思想 第四版》的朋友可能还记得里面讲解泛型一章的时候,里面很多例子是下面这样的:
+```java
+ Map map = new Map();
+```
+而我们平常写的都是这样的:
+```java
+ Map map = new Map<>();
+```
+这就是类型推断,《Java编程思想 第四版》这本书出书的时候最新的JDK只有1.6(JDK7推出的类型推断),在Java编程思想里Bruce Eckel大叔还提到过这个问题
+(可能JDK的官方人员看了Bruce Eckel大叔的Thinking in Java才加的类型推断,☺),在JDK7中推出了上面这样的类型推断,可以减少一些无用的代码。
+(Java编程思想到现在还只有第四版,是不是因为Bruce Eckel大叔觉得Java新推出的语言特性“然并卵”呢?/滑稽)
+
+在JDK7中,类型推断只有上面例子的那样的能力,即只有在使用**赋值语句**时才能自动推断出泛型参数信息(即<>里的信息),下面的官方文档里的例子在JDK7里会编译
+错误
+```java
+ List stringList = new ArrayList<>();
+ stringList.add("A");
+ //error : addAll(java.util.Collection extends java.lang.String>)in List cannot be applied to (java.util.List)
+ stringList.addAll(Arrays.asList());
+```
+但是上面的代码在JDK8里可以通过,也就说,JDK8里,类型推断不仅可以用于赋值语句,而且可以根据代码中上下文里的信息推断出更多的信息,因此我们需要些的代码
+会更少。加强的类型推断还有一个就是用于Lambda表达式了。
+
+大家其实不必细究类型推断,在日常使用中IDE会自动判断,当IDE自己无法推断出足够的信息时,就需要我们额外做一下工作,比如在<>里添加更多的类型信息,
+相信随着Java的进化,这些便利的功能会越来越强大。
+
+