GuavaImmutableList
有一系列的重载of()
方法。正如在这个已解决问题的上下文中所讨论的那样,这些存在是为了避免在将可变参数与泛型混合时出现的警告。
但除此之外,0 和 1 参数方法都依赖于专门的列表实现。似乎可以对 2..11 参数方法执行相同的操作,从而减少这些列表的内存消耗 - 类似于
final class ImmutableListWith2Elements<E> extends ImmutableList<E> {
final E e1;
final E e2;
...
相反,它们使用基于数组的实现,这意味着除了内容引用之外,还存储一个数组对象和对数组的引用。你能帮我理解这里所涉及的权衡吗?