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的程序来启动。


分享到:


相關文章: