संभव डुप्लिकेट:
Why does Guava's ImmutableList have so many overloaded of() methods?गुवा कक्षाएं केवल वैसे ही फैक्ट्री विधियों को प्रदान करती हैं जो varargs लेती हैं?
अमरूद के ImmutableList (और कुछ अन्य वर्ग) को देखते हुए, आप अतिभारित of
सुविधा तरीकों के बहुत सारे मिल जाएगा ("युक्त एक अपरिवर्तनीय सूची रिटर्न दिया तत्व, क्रम में। ") जो पैरामीटर की एक अलग संख्या लेते हैं:
...
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)
...
सभी तरह से इस एक के लिए:
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)
मेरा कुछ सहयोगियों इस मूर्खतापूर्ण पर विचार, सोच क्यों नहीं है सिर्फ एक नहीं विधि है: of(E... elements)
। उन्हें संदेह है कि यह एक खराब निर्देशित प्रदर्शन "अनुकूलन" है जो श्रेणी में पड़ता है "क्या आपको लगता है कि आप कंपाइलर से ज्यादा चालाक हैं", या ऐसा कुछ।
मेरा झुकाव केविन बोर्रियन एट अल है। इन तरीकों को वास्तविक कारण के लिए वहां रखें। क्या कोई भी कारण बता सकता है (या अनुमान लगा सकता है) क्या कारण हो सकता है?
यदि लाइब्रेरी पुरानी थी तो मुझे संदेह होगा कि विधियों को पूर्व जावा 5.0 लिखा गया था। मूल कोड पुराना हो सकता है और इसे दोबारा नहीं किया गया है। –
@ पीटर: इस तथ्य को कभी भी ध्यान न दें कि यह उन्हें हटाने के लिए पिछली संगतता को तोड़ देगा (कोड एक विधि के खिलाफ जुड़ा होगा जो अब मौजूद नहीं है), जिसे वे नहीं चाहते हैं। हालांकि उन्हें कम से कम बहिष्कृत किया जा सकता था। –
@ मार्क, विडंबना यह है कि यह (ई []) निर्माता है जिसे बहिष्कृत किया गया है। ;) –