Mögliche Duplizieren:
Why does Guava's ImmutableList have so many overloaded of() methods?Warum liefern Guava-Klassen so viele Fabrik-Methoden, anstatt nur eine, die Varargs braucht?
bei Guava sucht ImmutableList (und einigen anderen Klassen), werden Sie viele überladene of
Bequemlichkeit Methoden ("Gibt eine unveränderliche Liste mit den finden gegeben Elemente, in der Reihenfolge. "), die eine andere Anzahl von Parametern annehmen:
...
public static <E> ImmutableList<E> of(E e1, E e2, E e3)
public static <E> ImmutableList<E> of(E e1, E e2, E e3, E e4)
public static <E> ImmutableList<E> of(E e1, E e2, E e3, E e4, E e5)
...
Den ganzen Weg zu dieser:
public static <E> ImmutableList<E> of(E e1,
E e2,
E e3,
E e4,
E e5,
E e6,
E e7,
E e8,
E e9,
E e10,
E e11,
E e12,
E... others)
Einige Kollegen von mir diesen dummen betrachten, fragen, warum es ist nicht nur eine Methode: of(E... elements)
. Sie vermuten, dass es eine schlecht geführte Performance- "Optimierung" ist, die in die Kategorie "Denkst du, du bist schlauer als Compiler" oder so ähnlich fällt.
Meine Ahnung ist, dass Kevin Bourrillion et al. Setze diese Methoden aus einem echten Grund ein. Kann jemand erklären (oder spekulieren), was dieser Grund sein könnte?
Wenn die Bibliothek älter wäre, würde ich vermuten, dass die Methoden vor Java 5.0 geschrieben wurden. Der ursprüngliche Code könnte so alt sein und wurde nicht umgestaltet. –
@Peter: Es macht nichts, dass es die Rückwärtskompatibilität brechen würde, um sie zu entfernen (der Code wäre gegen eine Methode verknüpft, die nicht mehr existiert), die sie nicht wollen. Obwohl sie zumindest veraltet sein konnten, war das so. –
@Mark, ironischerweise ist es der von (E []) Builder, der veraltet ist. ;) –