关于List.of()

该文章已生成可运行项目,

List.of() 是 Java 9 引入的静态工厂方法,用于创建不可变列表(Immutable List)

不可变意味着:

  •  创建后不能增删改

  •  线程绝对安全

  •  内存占用更少

创建字符串列表
List<String> colors = List.of("红", "绿", "蓝");
System.out.println(colors);  // 输出:[红, 绿, 蓝]

// 尝试修改会报错!
colors.add("黄");  // ❌ 抛出 UnsupportedOperationException
colors.set(0, "黑"); // ❌ 同样报错!
创建数字列表
List<Integer> scores = List.of(95, 88, 100);
System.out.println("最高分: " + scores.get(2)); // 输出:最高分: 100
空列表
List<String> emptyList = List.of();
System.out.println(emptyList.size());  // 输出:0

本文章已经生成可运行项目
### Java `List.of` 方法的替代方案及其最低支持版本 在 Java 中,`List.of()` 是一种用于创建不可变列表的方法。然而,此方法是在 **Java 9** 及更高版本中引入的[^1]。如果当前使用的 JDK 版本低于 Java 9,则会遇到 `cannot find symbol` 的错误。 #### 替代方案 对于较低版本的 Java(如 Java 8 或更早),可以使用以下几种方式来实现类似的不可变列表功能: 1. 使用 `Collections.unmodifiableList` 和 `Arrays.asList` 组合: ```java List<String> immutableList = Collections.unmodifiableList(Arrays.asList("element1", "element2")); ``` 2. 手动定义一个只读接口并返回数据副本: ```java public List<String> getImmutableList() { return Collections.unmodifiableList(new ArrayList<>( Arrays.asList("element1", "element2"))); } ``` 3. 如果不需要严格意义上的不可变特性,可以直接使用 `ArrayList` 构造器初始化列表: ```java List<String> mutableList = new ArrayList<>(Arrays.asList("element1", "element2")); ``` #### 最低支持版本 `List.of()` 方法最早出现在 **Java 9** 中[^2]。因此,在升级到 Java 9 或更高版本之前无法直接使用该方法。建议检查项目的 JDK 配置是否满足需求。可以通过以下命令验证当前环境中的 JDK 版本: ```bash java -version ``` 如果确认需要兼容更低版本的 Java,请采用上述替代方案之一。 --- ### 示例代码 以下是基于不同场景下的代码示例: #### 场景一:使用 `Collections.unmodifiableList` ```java import java.util.Arrays; import java.util.Collections; import java.util.List; public class ImmutableExample { public static void main(String[] args) { List<String> immutableList = Collections.unmodifiableList(Arrays.asList("apple", "banana", "cherry")); System.out.println(immutableList); } } ``` #### 场景二:手动构建不可变列表 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ManualImmutableExample { private final List<String> items; public ManualImmutableExample(List<String> initialItems) { this.items = Collections.unmodifiableList(new ArrayList<>(initialItems)); } public List<String> getItems() { return items; } public static void main(String[] args) { ManualImmutableExample example = new ManualImmutableExample(Arrays.asList("red", "green", "blue")); System.out.println(example.getItems()); } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值