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

相关推荐
ss2738 分钟前
Java并发编程:DelayQueue延迟订单系统
java·python·算法
SHERlocked9310 分钟前
摄像头 RTSP 流视频多路实时监控解决方案实践
c++·后端·音视频开发
wcy_101113 分钟前
七大软件设计原则
java·设计规范
invicinble15 分钟前
jar包在执行的时候需要关注的细节(提供一个解构jvm问题的视角)
java·jvm·jar
麦芽糖021917 分钟前
SSE介绍及使用(Server-Send Events)
java
alan072121 分钟前
【Java + Elasticsearch全量 & 增量同步实战】
java·elasticsearch·jenkins
AutoMQ32 分钟前
How does AutoMQ implement a sub-10ms latency Diskless Kafka?
后端·架构
Rover.x33 分钟前
Netty基于SpringBoot实现WebSocket
spring boot·后端·websocket
hashiqimiya34 分钟前
后端springboot的接收前端发来的数据反序列化原理
java
疯狂的程序猴1 小时前
用 HBuilder 上架 iOS 应用时如何管理Bundle ID、证书与描述文件
后端