JAVA8怎么使用9的List.of

在 Java 8 中,List.of 方法并不可用,因为这是从 Java 9 开始引入的用于创建不可变列表的便捷方法。要在 Java 8 中达到类似的效果,您需要使用其他方式来创建列表。常规的方法是先创建集合对象然后再添加元素

List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
list.add("three");

以下是几种比较方便的替代方案:

1、使用Arrays.asList

// 创建一个固定大小的列表
List<String> list = Arrays.asList("one", "two", "three");

// 如果需要一个可以改变大小的列表,可以这样做:
List<String> mutableList = new ArrayList<>(Arrays.asList("one", "two", "three"));

2、使用匿名内部类

List<String> list = new ArrayList<String>() {{
    add("one");
    add("two");
    add("three");
}};

`List.of()`是在Java 9引入的一个静态工厂方法,用于创建不可变的列表(Immutable List)。虽然你在提到的是Java 1.8,但实际上这个特性并不适用于该版本。如果你确实需要在Java 1.8环境下创建类似功能的列表,可以考虑其他替代方案。 然而,在更高的版本如Java 9及以上版本中,你可以很方便地利用 `List.of()` 来生成固定内容、不可修改的集合,并且这种方式非常简洁明了: ```java import java.util.List; public class Main { public static void main(String[] args) { // 创建一个包含三个字符串元素的不可变列表 List<String> list = List.of("apple", "banana", "orange"); System.out.println(list); } } ``` **注意**: 尝试对由`List.of()`产生的实例执行添加、删除等操作将抛出`UnsupportedOperationException`异常,因为它是一个只读集合。 对于Java 1.8用户来说,如果想要获得相似的效果,则可以选择通过匿名内部类的方式定义固定的ArrayList,或是直接使用Collections.unmodifiable*系列的方法包装现有的可变列表。 ### 替代方案示例 (针对 Java 1.8) #### 方案一:使用 Collections.unmodifiableList() ```java import java.util.Arrays; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) { List<String> mutableList = Arrays.asList("apple", "banana", "orange"); List<String> immutableList = Collections.unmodifiableList(mutableList); System.out.println(immutableList); } } ``` 此代码段会创建一个新的不可变列表视图。 #### 方案二:自定义构造函数初始化 ```java final class ImmutableClass { private final List<Integer> numbers; public ImmutableClass(Integer... elements){ this.numbers = new ArrayList<>(Arrays.asList(elements)); } @Override public String toString() { return numbers.toString(); } } // 使用... new ImmutableClass(1,2,3).toString(); // 输出 [1, 2, 3] ``` 这种方法更接近于模拟`of()`的行为,同时保持了对象状态的一致性和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值