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

相关推荐
苍何3 小时前
开源微信流 Windows,微信聊天记录,可以直接给 Codex 和 Obsidan 了
后端
代码什么用4 小时前
Spring基础使用
java·后端·spring
Su米苏5 小时前
Spring AI 中MCP 与普通 @Tool的区别
java·人工智能·spring
明月_清风5 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js
码云数智-园园5 小时前
unique_ptr 还是 shared_ptr?C++ 智能指针选型与内存泄漏实战分析
java·开发语言
老板一杯拿铁5 小时前
Java 异常体系详解:从字节码原理到最佳实践
java
蜗牛互联网5 小时前
Java 17 HttpClient调用文件转写API的超时与失败回退
java·人工智能·后端
禾小西6 小时前
07丨Redis 哨兵机制:主库故障后,如何恢复服务?
java·开发语言·redis
我不是阵雨6 小时前
JDK 21虚拟线程Pinning陷阱:一文拔钉解困
java·开发语言
小卡车5556 小时前
java反射、自定义注解的应用(自定义分页)
java