java - Guava :ImmutableList.of(E[]) 的最佳实践

标签 java collections guava

我刚刚注意到 ImmutableList.of(E[])已弃用,取而代之的是 ImmutableList.copyOf(),原因很明显,如果在其他地方使用原始数组,则无法真正使列表不可变。

如果您有一个返回数组的方法,并且您知道该方法不保留对数组的引用,并且您的代码除了传递之外不保留对数组的引用,该怎么办它到 ImmutableList.of()?

我应该...

  • 继续使用 ImmutableList.of(E[])(这似乎是个坏主意,因为该方法将消失)
  • 使用 Collections.unmodifiableList(Arrays.asList())
  • 使用 ImmutableList.copyOf()——这似乎是不会出现性能/资源问题的最佳想法,否则就不需要复制。

最佳答案

ImmutableList.of(E[]) 不会也从来没有存储它直接给定的数组(如果存储了它就不是不可变的,这会破坏类的意义)。由于命名原因,它已被弃用。如果你看一下实现,它是:

public static <E> ImmutableList<E> of(E[] elements) {
  return copyOf(elements);
}

所以我的建议是一般只使用 ImmutableList.copyOf()。如果你知道你只是包装一个数组供内部使用或类似的东西,请随意保存副本并使用 Arrays.asList 但我更喜欢 ImmutableList用于 API。

关于java - Guava :ImmutableList.of(E[]) 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6777568/

相关文章:

java - 计算指定数量

generics - 我们可以在黑莓应用程序开发中使用通用类或集合类吗

java - Guava 缓存生成器 : imply additional conditions to entity removal

java - 需要高性能 Scala/Java 集合

java - 需要在Tomcat服务器中抓取传入的URL请求

java - android-Java- 将 WeakReference<Bitmap> 转换为普通位图

scala - 为什么 Scala 中没有可变的 TreeMap?

python - 存储 boolean 值以在 python 中节省内存的最佳方法

Java 对 Guava TreeBasedTable 进行排序

java - 打印出 hashmap 内部的 hashmap