Guava的ImmutableList
有一系列重载的of()
方法。正如在this solved question的上下文中所讨论的那样,存在这些是为了避免在将varargs与泛型混合时发生的警告。
但除此之外,0和1参数方法都依赖于专门的列表实现。对于2..11参数方法似乎可以做同样的事情,从而减少这些列表的内存消耗 - 沿着
行。final class ImmutableListWith2Elements<E> extends ImmutableList<E> {
final E e1;
final E e2;
...
相反,它们使用基于数组的实现,这意味着除了内容引用之外,还存储数组对象和对数组的引用。你能帮我理解这里涉及的权衡吗?
答案 0 :(得分:5)
你能帮我理解这里涉及的权衡吗?
这是一个权衡:
我的建议:
为了记录,我认为Guava开发人员做对了。