Java 14 中令人期待的五大新特性!

2020/3/17日JDK14正式發版,生產環境用不用再說,趕緊下載下來體驗一番。不過據說該版本並不是長期版本,但即使再發布新版本也是在此基礎上的。下面介紹一些實用特性

instanceof模式匹配

通常情況下我們使用instanceof來探測類的真實類型,如果符合該類型,則可進行強制轉換。

在Java14之前,我們通常的寫法如下:

<code>Object obj = "字符串";
if(obj instanceof String){
String str = (String) obj;
System.out.println("Java14之前的:" + str);
}/<code>

通過java14的新特性,我們可以簡化成如下方式:

<code>Object obj = "字符串";
if(obj instanceof String str){
System.out.println("Java14之後的:" + str);
}/<code>

Switch表達式

java14引入了新形式的switch標籤“case L->”,表示如果匹配,則只執行標籤右邊的代碼。switch標籤允許在每種情況下使用逗號分隔多個常量。


Java 14 中令人期待的五大新特性!

記錄類型(Record Type)的引入

Java 14中記錄類型(Record Type)作為預覽特性被引入。記錄對象允許使用緊湊的語法來聲明類,和枚舉類型一樣,記錄也是類的一種受限形式。

定義一個Record類型如下:

<code>public record Person(int id, int age) {

}/<code>

使用Record操作如下:

<code>Point point = new Point(1,3);
System.out.println(point.id());
System.out.println(point.age());/<code>

文本塊作為預覽特性保留

通常情況下我們定義一個字符串,如果比較長可使用如下形式進行編寫:

<code>String html = "\\n" +
" \\n" +
"

Hello, world

\\n" +
" \\n" +
"\\n";/<code>

使用java14的文本塊新特性,則可改寫為如下形式:

<code>String html = """


Hello, world




""";/<code>

文本塊的開頭定界符是由三個雙引號字符(""")組成的序列,後面跟0個或多個空格,最後跟一個行終止符。內容從開頭定界符的行終止符之後的第一個字符開始。

結束定界符是三個雙引號字符的序列。內容在結束定界符的第一個雙引號之前的最後一個字符處結束。

打包工具終於來了

在Java 13發佈前的最後一刻被從外圍移除的打包工具jpackage終於可以在Java 14中使用了。但是要注意,它只在Incubator版本中提供。

這個打包工具應該可以讓開發人員創建自主的Java應用程序,它以JavaFX javapackager這個打包工具為基礎。它的主要特點有如下三個:

  1. 支持本地打包格式,為用戶提供自然的安裝體驗;
  2. 打包時可以指定啟動參數;
  3. 通過命令行或使用ToolProvider API的程序來啟動。


分享到:


相關文章: