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的程序来启动。
閱讀更多 新猿易碼 的文章