前言
List.ofLazy() 是 Java 26 中作为预览特性 引入的一个静态工厂方法,用于创建一个惰性计算列表
List.ofLazy()使用
java
import java.util.List;
public class ListOfLazyDemo {
static void main() {
List<Integer> list = List.ofLazy(10, i -> i + 1);
System.out.println(list);
}
}
输出结果为

特点
核心特性
- 按需计算 :列表创建时并不会调用
computingFunction。只有当首次调用list.get(i)访问某个索引时,才会计算该位置的值 - 线程安全:即使在并发访问下,每个元素的计算也保证"至多发生一次"
- 不可修改:返回的列表是不可变的,不支持修改操作
- 惰性常量优化 :如果该列表本身被存储在
final字段中,JVM 可以对已计算的值进行常量折叠优化,后续访问速度接近final常量-5-9。 - 越界处理 :访问
-1或size()及以上的索引会抛出IndexOutOfBoundsException - 递归保护 :如果计算函数通过返回的列表递归调用自身(访问同一索引),会抛出
IllegalStateException
特点
java
package cn.com.ut.jdk27;
import java.util.List;
public class ListOfLazyDemo {
static void main() {
List<Integer> list = List.ofLazy(10, i -> i + 1);
System.out.println(list);
list.add(3);
}
}
输出

总结
但是目前该特性是在JDK26属于预览属性,编译和运行都需要开启预览标志,可以试试