Jdk21字符串模版

前言

Jdk21发布时,新增了预览属性,字符串模版(JEP 430),它是字符串插值语言的更改,为开发者提供了一种更加高效和简洁的字符串处理方式。

字符串模版使用

预览属性开启

由于字符串在Jdk21是一项预览属性,所以想要使用它,就必须开启预览模式,如果是maven的话,可以用以下配置

maven开启预览属性
xml 复制代码
 <build>
       <plugins>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
               <configuration>
                   <compilerArgs>
                       <compilerArg>--enable-preview</compilerArg>
                   </compilerArgs>
               </configuration>
           </plugin>
       </plugins>
    </build>

或者在idea启动时,加入参数的预览

idea开启预览属性

(1)首先在jvm optional加入预览参数--enable-preview

(2)在Java Compiler加入预览参数

这样就可以使用字符串模版预览属性

字符串模版使用

arduino 复制代码
import static java.lang.StringTemplate.STR;

public class Test {


    public static void main(String[] args) {
        int x = 20, y = 20;
        String s = STR."\{x} + \{y} = \{x + y}";
        System.out.println(s);
    }
}

输出结果为

或者,定义一个实体类

typescript 复制代码
public class User {

    private Long id;

    private String name;

    public User(Long id, String name) {
        this.id = id;
        this.name = name;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + ''' +
                '}';
    }
}

然后使用字符串模版

typescript 复制代码
import static java.lang.StringTemplate.STR;

public class Test {


    public static void main(String[] args) {
        User user = new User(1L, "aa");
        String s = STR."\{user.getId()} , \{user.getName()} ";
        System.out.println(s);
    }
}

输出结果为

总结

Jdk21把字符串模版作为一个预览属性,并且在Jdk22再次预览,但是Jdk23发布的时候,删除了该预览属性,所以在jdk23该属性是没有的

相关推荐
CoderYanger5 小时前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第二弹)
java·数据库·spring boot·spring·面试·java-ee·mybatis
CQU_JIAKE8 小时前
11.7[高体】
java·后端·spring
Csvn8 小时前
认识 Nginx
后端·nginx
apcipot_rain9 小时前
C++转Java日记(04)
java·开发语言·c++
红尘散仙9 小时前
谁说终端只能敲键盘?我用 Rust 给小说阅读器加上了鼠标
前端·后端·rust
特立独行的猫A9 小时前
我给女儿写了个打字练习:一边敲键盘,一边把小学英语单词记牢
java·后端·python
陈随易10 小时前
C++26 草案被否,二十八年来头一回
前端·后端·程序员
金銀銅鐵10 小时前
同一个 Hello World,Kotlin 和 Java 在字节码层面差在哪
jvm·后端·kotlin
憧憬成为java架构高手的小白11 小时前
LangGraph4j 实战(下)
java
天诰11 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程