2010-08-30 5 views

उत्तर

29

आप Google संग्रह (गुवा) के साथ एक अपरिवर्तनीय एनमसेट प्राप्त कर सकते हैं।


संसाधन:

+2

अमरूद एक भयानक पुस्तकालय बन रहा है। यह चट्टानें! +1 –

+2

अगर इसे सेट करता है तो इसे स्वीकार कर लिया होता है अगर 'Sets.immutableEnumSet' ने 'ImmutableEnumSet' क्लास' को वापस कर दिया होगा, न केवल 'ImmutableSet'। हालांकि मैं ऐसा करने का अनुरोध करने की कोशिश करूंगा। –

+4

क्या आप इस सार्वजनिक इमटेबलएनमसेट प्रकार को देखते हैं, मुझे आश्चर्य है? –

11

Collections.unmodifiableSet()EnumSet को लपेटने में क्या गड़बड़ है?

सच है, मूल EnumSet अभी भी व्यवहार्य है, लेकिन जब तक आप मूल संदर्भ को त्याग देते हैं, तो यह रैपर के अंदर अपरिवर्तनीय के रूप में अच्छा है।

संपादित करें: ठीक है, EnumSet के बाद से अधिक किसी भी उदाहरण तरीकों प्रदान नहीं करता है और Set इंटरफ़ेस से ऊपर, इस समाधान का उपयोग नहीं करने के लिए केवल कारण यह है कि EnumSet प्रकार प्रलेखन प्रयोजनों के लिए उपयोगी है, और आपको लगता है कि जब खोना इसे Set में लपेटें। इसके अलावा, EnumSet व्यवहार संरक्षित किया जाएगा।

+4

यह एक 'EnumSet' –

+0

@Colin के सभी तरीकों की जरूरत नहीं है क्या तरीकों कि होगा हो सकता है? आप अभी भी इसे लपेटने से पहले enumset बनाने के लिए स्थिर विधियों का उपयोग कर सकते हैं, और मुझे enumet में कोई भी नया उदाहरण विधियां नहीं दिखाई देती हैं कि अन्य सेटों में या तो नहीं है। –

+0

@ स्काफमैन। मुझे लगता है कि मैं इसे ज्यादातर दस्तावेज़ीकरण उद्देश्यों के लिए चाहता हूं। एनमसेट के बारे में बात यह है कि यह एक निश्चित पुनरावृत्ति आदेश निर्दिष्ट करता है, और यदि आप 'एनमसेट' के स्थान पर 'सेट' का उपयोग करते हैं तो यह आपके अपेक्षा से अलग परिणाम उत्पन्न कर सकता है: कोई व्यक्ति विधि हस्ताक्षर में 'सेट' देखता है और 'हैशसेट' में गुजरता है उदाहरण के लिए। इस आवश्यकता के बिना आपका सुझाव ठीक होगा। बीटीडब्लू, 'एनमसेट' में अतिरिक्त विधियां नहीं हैं (केवल रचनाकार), हालांकि कुछ मामलों में 'पहला', 'अंतिम' और 'रिवर्स इटरेटर' होना वास्तव में अच्छा होगा। –

संबंधित मुद्दे