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標籤允許在每種情況下使用逗號分隔多個常量。
記錄類型(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這個打包工具為基礎。它的主要特點有如下三個:
支持本地打包格式,為用戶提供自然的安裝體驗;打包時可以指定啟動參數;通過命令行或使用ToolProvider API的程序來啟動。