挑逗 Java 程序員的那些 Scala 絕技

有個問題一直困擾着 Scala 社區,爲何一些 Java 開發者將 Scala 捧到了天上,認爲它是來自上帝之吻的完美語言;而另一些 Java 開發者卻對它望而卻步,認爲它過於複雜而難以理解。一樣是 Java 開發者,爲什麼會出現兩種大相徑庭的態度,我想這其中必定有誤會。Scala 是一粒金子,可是被一些表面上看起來很是複雜的概念或語法包裹的太嚴實,以致於人們很難在短期內搞清楚它的價值。與此同時,Java 也在不斷地摸索前進,可是因爲 Java 揹負了沉重的歷史包袱,因此每向前一步都顯得異常艱難。本文主要面向 Java 開發人員,但願從解決 Java 中實際存在的問題出發,梳理最容易吸引 Java 開發者的一些 Scala 特性。但願能夠幫助你們快速找到那些真正能夠打動你的點。java

類型推斷

挑逗指數: 四星spa

咱們知道,Scala 一貫以強大的類型推斷聞名於世。不少時候,咱們無須關心 Scala 類型推斷系統的存在,由於不少時候它推斷的結果跟直覺是一致的。 Java 在 2016 年也新增了一份提議JEP 286,計劃爲 Java 10 引入局部變量類型推斷(Local-Variable Type Inference)。利用這個特性,咱們可使用 var 定義變量而無需顯式聲明其類型。不少人認爲這是一項激動人心的特性,可是高興以前咱們要先看看它會爲咱們帶來哪些問題。.net

與 Java 7 的鑽石操做符衝突

Java 7 引進了鑽石操做符,使得咱們能夠下降表達式右側的冗餘類型信息,例如:code

List<Integer> numbers = new ArrayList<>();

若是引入了 var,則會致使左側的類型丟失,從而致使整個表達式的類型丟失:開發

val numbers = new ArrayList<>();

因此 var 和 鑽石操做符必須二選一,魚與熊掌不可兼得。get

容易致使錯誤的代碼

下面是一段檢查用戶是否存在的 Java 代碼:社區

相關文章
相關標籤/搜索