我在代码中找到了这一行
List<Element> elements = Arrays.asList(element);
并发现奇怪的是,我们只需要在一个元素上使用 Arrays.asList((。这让我想到是否有更好的方法来初始化只有一个元素的 ArrayList,而不会使其不可变。 据我所知,ArrayList 没有只接受一个元素的构造函数。
编辑- 根据青峰的回答,我发现这是目前做我需要的事情的唯一方法
List<Element> elements = Stream.of(element).collect(Collectors.toCollection(ArrayList::new));
在当前版本的Java下,你能做的最好的事情是:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
...
//additional elements can be added (later) to all lists -> all are immutable (also to the 2nd!)
List<Element> elements = new ArrayList<>(Arrays.asList(element));
// or
List<Element> elements = new ArrayList<>(Collections.singletonList(element));
// or
List<Element> elements = Stream.of(element)
.collect(toCollection(ArrayList::new));