You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Java List.of()重载方法的困惑及使用疑问

搞懂Java的List.of()方法:从困惑到上手

我太懂这种困惑了!第一次翻List.of()的文档时,我看着一堆重载方法也头大,咱们一点点把它掰明白:

为什么有1到10个参数的重载?

Java设计这些重载,核心是性能优化。如果只用可变参数(比如List.of(E... elements)),底层会自动创建一个数组来存参数,而10个以内的固定参数重载,能跳过数组创建这一步,直接生成列表,小数据量下效率更高。当然如果你要传11个及以上元素,它会自动用可变参数的版本,不用你特意去选。

什么是“不可修改列表”?

文档里说的这个特性是List.of()的核心:创建出来的列表不能添加、删除、修改元素,一旦尝试这么做,就会抛出UnsupportedOperationException。这种列表适合用来存固定不变的数据——比如系统的配置选项、常量集合,或者你想返回一个不希望被调用者修改的列表时用。

实际怎么用?

直接看代码示例最清楚:

1. 创建不同长度的列表

// 1个元素的列表
List<String> fruit = List.of("banana");

// 3个元素的列表
List<Integer> scores = List.of(90, 85, 95);

// 5个元素的列表(就是文档里提到的那个重载)
List<String> weekdays = List.of("Mon", "Tue", "Wed", "Thu", "Fri");

2. 注意不可修改的限制

别尝试修改它,不然会报错:

weekdays.add("Sat"); // 运行时抛出UnsupportedOperationException
weekdays.set(0, "Monday"); // 同样会报错!

对比老方法:Arrays.asList()

如果你以前用过Arrays.asList(),要注意它是“半可变”的——不能增删元素,但可以修改现有元素;而List.of()是完全不可变的,连修改元素都不行,安全性更高。

内容的提问来源于stack exchange,提问作者jxie0755

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:14:32