体验JDK21新特性:字符串模版

发布时间 2023-08-17 17:23:29作者: BrevinZhang

体验JDK21新特性:字符串模版

介绍

字符串模版是JDK21的新特性,详细内容可参考JEP430 https://openjdk.org/jeps/430
字符串模版类似Python的fstring

a=1
b=2
s=f'{a} + {b} = {a+b}'

相比于用+号或者StringBuilder拼接字符串,字符串模板更为简洁

配置JDK21环境

JDK21还没有正式发布,可以在openjdk的官网获取

https://jdk.java.net/21/

下载完毕后修改JAVA_HOME,PATH,将JDK21添加到环境变量中

体验字符串模版

创建Main.java文件,添加如下内容

import static java.lang.StringTemplate.STR;

public class Main {
    public static void main(String[] args) {
        String name = "JDK21";
        String message = STR."Hello \{name}!";
        System.out.println(message);
    }
}

使用如下命令运行

javac --enable-preview --source 21 -Xlint:preview Main.java
java --enable-preview Main

运行结果如下

Main.java:6: 警告: [preview] 字符串模板 是预览功能,可能会在未来发行版中删除。
        String message = STR."Hello \{name}!";
                             ^
Main.java:6: 警告: [preview] 字符串模板 是预览功能,可能会在未来发行版中删除。
        String message = STR."Hello \{name}!";
                             ^
Main.java:1: 警告: [preview] StringTemplate 是预览 API,可能会在未来发行版中删除。
import static java.lang.StringTemplate.STR;
                       ^
3 个警告
Hello JDK21!

查看编译后class文件,可以发现Java中的字符串模版本质上是用+拼接字符串的语法糖

public class Main {
    public Main() {
    }

    public static void main(String[] var0) {
        String var1 = "JDK21";
        String var2 = "Hello " + var1 + "!";
        System.out.println(var2);
    }
}

在IDEA里运行

首先在项目结构里修改Language level为X
项目结构
在运行配置中添加虚拟机参数--enable-preview
运行配置
在设置中的Java Compile里的编译参数中添加--enable-preview
编译参数
完成设置后便可正常在IDEA中体验新特性