Jas*_*n S 9 java collections guava
我只是注意到,有人ImmutableList.of(E[])赞成使用ImmutableList.copyOf(),因为显而易见的原因是,如果在其他地方使用原始数组,则列表不能真正变为不可变.
如果你有一个方法返回一个数组,并且你知道该方法没有保留对数组的引用,并且你的代码不保留对数组的引用而不是传递给它,那该ImmutableList.of()怎么办?
我是不是该...
ImmutableList.of(E[])(似乎是一个坏主意,因为该方法将消失)Collections.unmodifiableList(Arrays.asList())ImmutableList.copyOf()- 这似乎是没有出现性能/资源问题的最佳想法,否则副本是不必要的.Col*_*inD 18
ImmutableList.of(E[])不会并且从未存储过它直接给出的数组(如果它确实存在则不会是不可变的,这会破坏类的重点).它因命名原因而被弃用.如果你看看实现,它是:
public static <E> ImmutableList<E> of(E[] elements) {
return copyOf(elements);
}
Run Code Online (Sandbox Code Playgroud)
所以我的建议是只使用ImmutableList.copyOf()一般.如果您知道您只是将数组包装为内部使用或某些内容,请随意保存副本并使用,Arrays.asList但我更喜欢ImmutableList使用API.