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 对启动优化与懒加载模式的再进化

相关推荐
IT_陈寒21 小时前
JavaScript开发者必看:5个让你的代码性能翻倍的隐藏技巧
前端·人工智能·后端
shengjk121 小时前
大数据工程师必看:为什么你的 IN 查询在 Flink/Spark 上慢到离谱?
后端
武子康21 小时前
大数据-252 离线数仓 - Airflow + Crontab 入门实战:定时调度、DAG 编排与常见报错排查
大数据·后端·apache hive
_周游21 小时前
Kaptcha—Google验证码工具
java·intellij-idea·jquery
我真会写代码21 小时前
深入理解JVM GC:触发机制、OOM关联及核心垃圾回收算法
java·jvm·架构
本喵是FW21 小时前
C语言手记1
java·c语言·算法
程序员Terry21 小时前
RocketMQ 使用指南
后端·rocketmq
洛阳泰山21 小时前
MaxKB4j Docker Compose 部署指南
java·docker·llm·springboot·rag·maxkb4j
AI茶水间管理员21 小时前
OpenClaw 的 Token 消耗怎么计算?(附实操优化方案)
后端
星浩AI21 小时前
现在最需要被 PUA 的,其实是 AI
人工智能·后端·github