摘要:版本已經支持局部變量推斷類型,并且使用方法比較簡單,這里使用該進行局部變量類型推斷的演示。特性展示局部變量類型推斷使用的標識符是代碼清單輸出結果編譯器根據局部變量右邊的字符串推斷局部變量為類型。
JDK10 局部變量類型推斷(一) JDK10 Local-Variable Type Inference
想要體驗 JDK10 局部變量類型推斷,可以選擇Eclipse Oxygen或者Intellij IDEA 2018.1.1,但是目前(2018.4.10)來看Eclipse Oxygen官方沒有給出原生支持,只能通過插件的方式來體驗 Java 10 Support for Oxygen,而且還有部分bug,詳情請參考該插件的issue。
Intellij IDEA 2018.1.1版本已經支持JDK10 局部變量推斷類型,并且使用方法比較簡單,這里使用該IDE進行JDK10
局部變量類型推斷的演示。
首先你要安裝JDK10,JDK10下載地址。
然后安裝完最新版本IDEA之后,新建一個Java Project,進入項目界面之后,選擇 Project Structure 。
然后選擇已經安裝好的 JDK10
在下拉列表中選擇 10-Local variable type inference
點擊OK之后,就可以體驗JDK10 局部變量類型推斷的特性了。
特性展示 1. 局部變量類型推斷使用的標識符是 var代碼清單 1-1
</>復制代碼
/**
* Local-Variable Type Inference
*/
public class Main {
public static void main(String[] args) {
var str = "HelloWorld";
System.out.println(str);
}
}
輸出結果
</>復制代碼
HelloWorld
編譯器根據局部變量右邊的字符串"HelloWorld",推斷局部變量str為String類型。
代碼清單 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);
}
}
輸出結果
</>復制代碼
1
2
3
編譯器根據局部變量右邊的ArrayList
為了說明以下她的優點我們看看JDK10之前的版本是如何聲明的
代碼清單 1-3
</>復制代碼
import java.util.ArrayList;
import java.util.List;
/**
* Local-Variable Type Inference
*/
public class Main {
public static void main(String[] args) {
List list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.stream().forEach(System.out::println);
}
}
輸出結果
</>復制代碼
1
2
3
與代碼 1-2 對比,好處是比較明顯的她避免的信息的信息冗余,讓代碼不再那么啰嗦,另外還有一點是對其了變量名,方便程序的閱讀,不過這一點可能不是那么重要如果你不在乎的話。
舉兩個例子:
代碼清單 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 {
}
對比以上兩種類的定義,效果應該來說是比較明顯的。
第二個例子是關于變量名對齊
代碼清單 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;
ArrayList b = 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";
}
}
對比該類中,上下兩種定義方式,應該說第二種方式閱讀起來更加方便。(ps:這里的變量聲明的命名不規范)
2. 標識符var 是保留字而不是關鍵字不能使用var作為類名,但可以作為變量名,方法名等。
代碼清單 1-5
</>復制代碼
/**
* Local-Variable Type Inference
*/
public class Main {
public static void main(String[] args) {
var var = 10;
}
public void var() {
}
}
未完待續......
To Be Continued......
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69008.html
摘要:目標發布目前有兩個主要功能針對局部變量類型推斷這將刪除大部分對象實例化所需的冗長的包含手動類型信息整合源樹的庫即不同的庫將被合并成一個單一的存儲庫。特別是,承諾為局部變量實例化引入類型推斷機制,并將現有的存儲庫合并到一個存儲庫中。 JDK 10 何時發布? JDK 10 是 Java 10 標準版的部分實現,將于 2018 年 3 月 20 日發布,改進的關鍵點包括一個本地類型推斷、一...
摘要:的新特性說了這么多,看都會有哪些特性來改變我們寫代碼的方式呢局部變量類型推斷局部變量類型推斷可以說是中最值得注意的特性,這是語言開發人員為了簡化應用程序的編寫而采取的又一步,如下圖所示。 showImg(https://segmentfault.com/img/remote/1460000015356980); Java 9才發布幾個月,很多玩意都沒整明白,現在Java 10又快要來了...
摘要:在此基礎上又向前邁進了一步局部變量類型推斷允許開發人員跳過局部變量的類型聲明局部變量是指在方法定義,初始化塊,循環和其它的如代碼塊,會推斷該局部變量的類型。 前言 之前面試的時候問了我是否了解JDK10的變化,一時回答不出來,所以只回答了JDK8中的函數式編程和流編程。今天看到這篇講JAVA10的文章,順便了解一下。 正文 JAVA10的所有新特性請參考這里。在所有的JEP中,JEP-...
摘要:就等于局部變量類型推斷使用示例既然叫局部變量類型推斷,以只能用在局部變量中,下面給出更多使用示例。,本次局部變量類型推斷實戰文章就到這里了,后續帶來更多的的實戰方面的文章。 現在 Java 9 被遺棄了直接升級到了 Java 10,之前也發過 Java 10 新特性的文章,現在是開始實戰 Java 10 的時候了。 今天要實戰的是 Java 10 中最重要的特性:局部變量類型推斷,大家...
摘要:的問題在于,版本號中編碼了它和它對之前版本的兼容性信息。但是在六個月節奏的情況下,這些信息都是未知的,在發布前任何事情都可能發生,由此規范下的版本號也會是未知的。程序會對文件的完整性做一個保護,因此修改既可能丟失。 本文是對底部參考資料的整理得到的,由于本人技術水平和英語水平都不是很高,有些詞如有翻譯錯誤或句子的理解錯誤還請指出。 JEP 286 局部變量推斷: var 傳統的 J...
閱讀 715·2021-11-16 11:44
閱讀 3546·2019-08-26 12:13
閱讀 3242·2019-08-26 10:46
閱讀 2356·2019-08-23 12:37
閱讀 1187·2019-08-22 18:30
閱讀 2531·2019-08-22 17:30
閱讀 1841·2019-08-22 17:26
閱讀 2290·2019-08-22 16:20
极致性价比!云服务器续费无忧!
Tesla A100/A800、Tesla V100S等多种GPU云主机特惠2折起,不限台数,续费同价。
NVIDIA RTX 40系,高性价比推理显卡,满足AI应用场景需要。
乌兰察布+上海青浦,满足东推西训AI场景需要