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

相关推荐
柒和远方1 小时前
从审计日志到可下载证据包:事务型 Outbox、租约 fencing 与保留水位
前端·后端·架构
卓怡学长1 小时前
w266基于spring boot + vue 圣地延安美食乐享系统
java·数据库·vue.js·spring boot·spring·intellij-idea
C++、Java和Python的菜鸟2 小时前
第7章 Java高级技术
java·开发语言
程序员佳佳2 小时前
模型网关灰度不是调百分比:把放量、观测和回滚做成账本
java·数据库·人工智能·redis·gpt·aigc·embedding
geovindu3 小时前
CSharp: Prototype Pattern
开发语言·后端·设计模式·.net·原型模式·创建型模式
Listen·Rain3 小时前
Springboot整合Ollama实现调用本地多模型
java·spring boot·后端
霸道流氓气质3 小时前
Java 工程师 AI 智能体(Agent)完整学习路线
java·人工智能·学习
aaPIXa6223 小时前
C++模板元编程:编译期计算Fibonacci数列
java·开发语言·c++
SunnyDays10114 小时前
Java 编辑 PDF:从增删改查到加密保护
java·修改 pdf·编辑 pdf
张三丰24 小时前
Agent 不只是聊天框:用 ArkUI 做一个鸿蒙任务工作台
后端