关于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
相关产品推荐
相关产品推荐

