GuavaImmutableList
には一連のオーバーロードされたof()
メソッドがあります。この解決済みの質問のコンテキストで説明したように、これらは可変引数とジェネリックを混在させるときに発生する警告を回避するために存在します。
しかし、それに加えて、0 および 1 パラメーター メソッドはそれぞれ特殊なリストの実装に依存しています。同じことを 2..11 パラメーター メソッドに対して行うことができるように思われます。これにより、これらのリストのメモリ消費が削減されます。
final class ImmutableListWith2Elements<E> extends ImmutableList<E> {
final E e1;
final E e2;
...
代わりに、配列ベースの実装を使用します。これは、コンテンツ参照に加えて、配列オブジェクトと配列への参照を格納することを意味します。ここに含まれるトレードオフを理解するのを手伝ってもらえますか?