JDK25中的StableValue

前言

随着JDK25发布之后,首次引入了StableValue语法糖,不过目前是预览属性,用于可延迟初始化的不可变值,这些对象在首次赋值之后即成为不可变

StableValue使用

orElseSet使用

typescript 复制代码
public class StableExample {
    static void main(String[] args) {
        var greeting = StableValue.<String>of();

        String message = greeting.orElseSet(() -> "Hello World");
        System.out.println(message);
    }
}

输出结果为

StableValue.list

csharp 复制代码
public class StableExample {
    static void main(String[] args) {
        List<Integer> fiveTimesTable = StableValue.list(11, index -> index * 5);

        System.out.println(fiveTimesTable);
        System.out.println(fiveTimesTable.get(0));
    }
}

输出结果为

当然该List是不可变的,往List里面增加或移除元素,就会报错

csharp 复制代码
public class StableExample {
    static void main(String[] args) {
        List<Integer> fiveTimesTable = StableValue.list(11, index -> index * 5);

        fiveTimesTable.add(1);
        System.out.println(fiveTimesTable);
    }
}

输出结果为

StableValue.supplier()使用

csharp 复制代码
import java.util.function.Supplier;

public class StableValueDemo {


    static void main() {
        Supplier<String> supplier = StableValue.supplier(() -> "hello world");
        System.out.println(supplier.get());
    }
}

输出结果为

总结

目前StableValues在JDK25是预览状态,但标志着 Java 对启动优化与懒加载模式的再进化

相关推荐
tb_first21 小时前
LangChain4j简单入门
java·spring boot·langchain4j
独自破碎E21 小时前
【BISHI9】田忌赛马
android·java·开发语言
范纹杉想快点毕业21 小时前
实战级ZYNQ中断状态机FIFO设计
java·开发语言·驱动开发·设计模式·架构·mfc
smileNicky1 天前
布隆过滤器怎么提高误差率
java
それども1 天前
分库分表的事务问题 - 怎么实现事务
java·数据库·mysql
Java面试题总结1 天前
基于 Java 的 PDF 文本水印实现方案(iText7 示例)
java·python·pdf
马猴烧酒.1 天前
【面试八股|Java集合】Java集合常考面试题详解
java·开发语言·python·面试·八股
测试工程师成长之路1 天前
Serenity BDD 框架:Java + Selenium 全面指南(2026 最新)
java·开发语言·selenium
lang201509281 天前
Java JSON绑定API:JSR 367详解
java·java-ee
eWidget1 天前
随机森林原理:集成学习思想 —— Java 实现多棵决策树投票机制
java·数据库·随机森林·集成学习·金仓数据库