摘要:版本已經(jīng)支持局部變量推斷類(lèi)型,并且使用方法比較簡(jiǎn)單,這里使用該進(jìn)行局部變量類(lèi)型推斷的演示。特性展示局部變量類(lèi)型推斷使用的標(biāo)識(shí)符是代碼清單輸出結(jié)果編譯器根據(jù)局部變量右邊的字符串推斷局部變量為類(lèi)型。
JDK10 局部變量類(lèi)型推斷(一) JDK10 Local-Variable Type Inference
想要體驗(yàn) JDK10 局部變量類(lèi)型推斷,可以選擇Eclipse Oxygen或者Intellij IDEA 2018.1.1,但是目前(2018.4.10)來(lái)看Eclipse Oxygen官方?jīng)]有給出原生支持,只能通過(guò)插件的方式來(lái)體驗(yàn) Java 10 Support for Oxygen,而且還有部分bug,詳情請(qǐng)參考該插件的issue。
Intellij IDEA 2018.1.1版本已經(jīng)支持JDK10 局部變量推斷類(lèi)型,并且使用方法比較簡(jiǎn)單,這里使用該IDE進(jìn)行JDK10
局部變量類(lèi)型推斷的演示。
首先你要安裝JDK10,JDK10下載地址。
然后安裝完最新版本IDEA之后,新建一個(gè)Java Project,進(jìn)入項(xiàng)目界面之后,選擇 Project Structure 。
然后選擇已經(jīng)安裝好的 JDK10
在下拉列表中選擇 10-Local variable type inference
點(diǎn)擊OK之后,就可以體驗(yàn)JDK10 局部變量類(lèi)型推斷的特性了。
特性展示 1. 局部變量類(lèi)型推斷使用的標(biāo)識(shí)符是 var代碼清單 1-1
/** * Local-Variable Type Inference */ public class Main { public static void main(String[] args) { var str = "HelloWorld"; System.out.println(str); } }
輸出結(jié)果
HelloWorld
編譯器根據(jù)局部變量右邊的字符串"HelloWorld",推斷局部變量str為String類(lèi)型。
代碼清單 1-2
import java.util.ArrayList; /** * Local-Variable Type Inference */ public class Main { public static void main(String[] args) { var list = new ArrayList(); list.add(1); list.add(2); list.add(3); list.stream().forEach(System.out::println); } }
輸出結(jié)果
1 2 3
編譯器根據(jù)局部變量右邊的ArrayList
為了說(shuō)明以下她的優(yōu)點(diǎn)我們看看JDK10之前的版本是如何聲明的
代碼清單 1-3
import java.util.ArrayList; import java.util.List; /** * Local-Variable Type Inference */ public class Main { public static void main(String[] args) { Listlist = new ArrayList<>(); list.add(1); list.add(2); list.add(3); list.stream().forEach(System.out::println); } }
輸出結(jié)果
1 2 3
與代碼 1-2 對(duì)比,好處是比較明顯的她避免的信息的信息冗余,讓代碼不再那么啰嗦,另外還有一點(diǎn)是對(duì)其了變量名,方便程序的閱讀,不過(guò)這一點(diǎn)可能不是那么重要如果你不在乎的話。
舉兩個(gè)例子:
代碼清單 1-4
/** * Local-Variable Type Inference */ public class Main { public static void main(String[] args) { ThisIsATestForJDK10LocalVariableTypeInference a = new ThisIsATestForJDK10LocalVariableTypeInference(); var b = new ThisIsATestForJDK10LocalVariableTypeInference(); } } class ThisIsATestForJDK10LocalVariableTypeInference { }
對(duì)比以上兩種類(lèi)的定義,效果應(yīng)該來(lái)說(shuō)是比較明顯的。
第二個(gè)例子是關(guān)于變量名對(duì)齊
代碼清單 1-5
import java.util.ArrayList; import java.util.HashMap; import java.util.Map; /** * Local-Variable Type Inference */ public class Main { public static void main(String[] args) { int a = 1; ArrayListb = new ArrayList<>(); Map c = new HashMap<>(); String d = "HelloWorld"; var a_1 = 1; var b_1 = new ArrayList (); var c_1 = new HashMap (); var d_1 = "HelloWorld"; } }
對(duì)比該類(lèi)中,上下兩種定義方式,應(yīng)該說(shuō)第二種方式閱讀起來(lái)更加方便。(ps:這里的變量聲明的命名不規(guī)范)
2. 標(biāo)識(shí)符var 是保留字而不是關(guān)鍵字不能使用var作為類(lèi)名,但可以作為變量名,方法名等。
代碼清單 1-5
/** * Local-Variable Type Inference */ public class Main { public static void main(String[] args) { var var = 10; } public void var() { } }
未完待續(xù)......
To Be Continued......
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/69008.html
摘要:目標(biāo)發(fā)布目前有兩個(gè)主要功能針對(duì)局部變量類(lèi)型推斷這將刪除大部分對(duì)象實(shí)例化所需的冗長(zhǎng)的包含手動(dòng)類(lèi)型信息整合源樹(shù)的庫(kù)即不同的庫(kù)將被合并成一個(gè)單一的存儲(chǔ)庫(kù)。特別是,承諾為局部變量實(shí)例化引入類(lèi)型推斷機(jī)制,并將現(xiàn)有的存儲(chǔ)庫(kù)合并到一個(gè)存儲(chǔ)庫(kù)中。 JDK 10 何時(shí)發(fā)布? JDK 10 是 Java 10 標(biāo)準(zhǔn)版的部分實(shí)現(xiàn),將于 2018 年 3 月 20 日發(fā)布,改進(jìn)的關(guān)鍵點(diǎn)包括一個(gè)本地類(lèi)型推斷、一...
摘要:的新特性說(shuō)了這么多,看都會(huì)有哪些特性來(lái)改變我們寫(xiě)代碼的方式呢局部變量類(lèi)型推斷局部變量類(lèi)型推斷可以說(shuō)是中最值得注意的特性,這是語(yǔ)言開(kāi)發(fā)人員為了簡(jiǎn)化應(yīng)用程序的編寫(xiě)而采取的又一步,如下圖所示。 showImg(https://segmentfault.com/img/remote/1460000015356980); Java 9才發(fā)布幾個(gè)月,很多玩意都沒(méi)整明白,現(xiàn)在Java 10又快要來(lái)了...
摘要:在此基礎(chǔ)上又向前邁進(jìn)了一步局部變量類(lèi)型推斷允許開(kāi)發(fā)人員跳過(guò)局部變量的類(lèi)型聲明局部變量是指在方法定義,初始化塊,循環(huán)和其它的如代碼塊,會(huì)推斷該局部變量的類(lèi)型。 前言 之前面試的時(shí)候問(wèn)了我是否了解JDK10的變化,一時(shí)回答不出來(lái),所以只回答了JDK8中的函數(shù)式編程和流編程。今天看到這篇講JAVA10的文章,順便了解一下。 正文 JAVA10的所有新特性請(qǐng)參考這里。在所有的JEP中,JEP-...
摘要:就等于局部變量類(lèi)型推斷使用示例既然叫局部變量類(lèi)型推斷,以只能用在局部變量中,下面給出更多使用示例。,本次局部變量類(lèi)型推斷實(shí)戰(zhàn)文章就到這里了,后續(xù)帶來(lái)更多的的實(shí)戰(zhàn)方面的文章。 現(xiàn)在 Java 9 被遺棄了直接升級(jí)到了 Java 10,之前也發(fā)過(guò) Java 10 新特性的文章,現(xiàn)在是開(kāi)始實(shí)戰(zhàn) Java 10 的時(shí)候了。 今天要實(shí)戰(zhàn)的是 Java 10 中最重要的特性:局部變量類(lèi)型推斷,大家...
摘要:的問(wèn)題在于,版本號(hào)中編碼了它和它對(duì)之前版本的兼容性信息。但是在六個(gè)月節(jié)奏的情況下,這些信息都是未知的,在發(fā)布前任何事情都可能發(fā)生,由此規(guī)范下的版本號(hào)也會(huì)是未知的。程序會(huì)對(duì)文件的完整性做一個(gè)保護(hù),因此修改既可能丟失。 本文是對(duì)底部參考資料的整理得到的,由于本人技術(shù)水平和英語(yǔ)水平都不是很高,有些詞如有翻譯錯(cuò)誤或句子的理解錯(cuò)誤還請(qǐng)指出。 JEP 286 局部變量推斷: var 傳統(tǒng)的 J...
閱讀 783·2021-11-16 11:44
閱讀 3636·2019-08-26 12:13
閱讀 3289·2019-08-26 10:46
閱讀 2416·2019-08-23 12:37
閱讀 1258·2019-08-22 18:30
閱讀 2596·2019-08-22 17:30
閱讀 1902·2019-08-22 17:26
閱讀 2351·2019-08-22 16:20