# java15新特性

# 文本块

在 Java 15 之前,处理多行文本需要手动拼接字符串、添加换行符 \n 和转义符 \,代码冗长且可读性极低

public class OldStringDemo {
    public static void main(String[] args) {
        // 传统方式写多行JSON
        String json = "{\n" +
                      "  \"name\": \"张三\",\n" +
                      "  \"age\": 25,\n" +
                      "  \"address\": \"北京市朝阳区\"\n" +
                      "}";

        // 传统方式写SQL
        String sql = "SELECT id, name, age \n" +
                     "FROM user \n" +
                     "WHERE age > 18 \n" +
                     "AND address LIKE '%北京%'";

        System.out.println(json);
        System.out.println(sql);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

新写法:文本块使用 三个双引号 """ 包裹多行文本,无需手动转义换行、双引号,格式与实际输出完全一致

public class TextBlockDemo {
    public static void main(String[] args) {
        // 文本块写JSON(无需转义、无需拼接)
        String json = """
                {
                  "name": "张三",
                  "age": 25,
                  "address": "北京市朝阳区"
                }""";

        // 文本块写SQL(格式与执行的SQL完全一致)
        String sql = """
                SELECT id, name, age
                FROM user
                WHERE age > 18
                AND address LIKE '%北京%'
                """;

        // 文本块写HTML
        String html = """
                <html>
                  <body>
                    <h1>Hello, 文本块</h1>
                  </body>
                </html>""";

        System.out.println(json);
        System.out.println(sql);
        System.out.println(html);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# 【了解】Hidden 隐藏类

Java 15 引入了 Hidden 隐藏类特性,这是一个专为框架和运行时环境设计的底层机制,主要是为了优化 动态生成短期类(比如 Lambda 表达式、动态代理)的性能问题,普通开发者无需关心。 在 Lambda 表达式、AOP 动态代理、ORM 映射等场景中,框架会动态生成代码载体(比如方法句柄、临时代理类),这些载体需要关联类的元数据才能运行。如果生成频繁,传统类的元数据会被类加载器追踪,需要等待类加载器卸载才能回收,导致元空间堆积和 GC 压力。 Hidden 类的特点是对其定义类加载器之外的所有代码都不可见,由于不可发现且链接微弱,JVM 垃圾回收器能够更高效地卸载隐藏类及其元数据,从而防止短期类堆积对元空间造成压力,优化了需要动态生成大量类的性能。

最近更新: 9/19/2026, 1:27:08 PM
编程NOTE   |