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