पर इटरेटिंग मैं this one के समान विषम कंटेनर का उपयोग कर रहा हूं। मैं आसानी से कंटेनर से रख सकते हैं और प्राप्त वस्तुओं:विषम कंटेनर
Favorites f = new Favorites();
f.putFavorite(String.class, "Java");
String someString = f.getFavorite(String.class);
लेकिन वहाँ इस तरह के कंटेनर से अधिक पुनरावृति करने के लिए कोई आसान तरीका होने लगते हैं। मैं Favorites
वर्ग के लिए एक keySet()
विधि जोड़ सकते हैं और आंतरिक Map
वस्तु की कुंजी सेट वापसी:
public Set<Class<?>> keySet() {
return favorites.keySet();
}
अब, मैं चाबियाँ पर पुनरावृति करना चाहते हैं, कुंजी का उपयोग संबद्ध मानों प्राप्त करने के लिए, और प्राप्त वस्तुओं पर कुछ तरीकों फोन:
for (Class<?> klass : f.keySet()) {
// f.getFavorite(klass).<SOME_METHOD_SPECIFIC_TO_THE_CLASS-KEY>
}
मैंने सोचा था कि मैं klass.cast(f.getFavorite(klass)).SOME_METHOD()
फोन करके मेरी कंटेनर में आयोजित वस्तुओं की विधियों तक पहुंच सकता है, लेकिन यह या तो काम नहीं करता है (जिसका अर्थ है, मैं को छोड़कर किसी भी तरीकों उपयोग नहीं कर सकते Object
-संबंधित तरीकों के लिए)।
मान लें कि, मेरे उपयोग के मामले में मैं इन सभी वस्तुओं के इंटरफेस का निरीक्षण करना चाहता हूं जो मैं फिर से पहचानता हूं और पता लगाए गए इंटरफ़ेस के अनुसार कार्य करता हूं। आइए यह भी मान लें कि मेरे पास विभिन्न वर्गों की दर्जनों वस्तुएं हो सकती हैं और उनमें से सभी तीन इंटरफेस में से एक को लागू करती हैं।
एकमात्र समाधान जो मैं सोच सकता हूं वह है कि मैं अपने कोड को दर्जनों isinstance
चेक के साथ भरना चाहता हूं, लेकिन मैं कम बोझिल दृष्टिकोण पसंद करूंगा (यानी जांच कर रहा हूं कि किसी दिए गए ऑब्जेक्ट में तीन इंटरफेस लागू होते हैं)।
में डालने के लिए जा रहा है आप एक है है "कम बोझिल दृष्टिकोण" का विचार आप कल्पना कर रहे हैं? मेरा मतलब है कि यदि आपके पास कोड के तीन अलग-अलग टुकड़े हैं, तो आप तीन अलग-अलग इंटरफेस में से एक को लागू करते हैं या नहीं, ऐसा लगता है कि हम जो भी दृष्टिकोण सुझा सकते हैं, उसे तीन अलग-अलग शाखाएं मिलनी होंगी। तो यह स्पष्ट होगा कि आपको बोझिल लगने पर क्या स्पष्टता मिल रही है। –
क्षमा करें, शायद मैं पर्याप्त स्पष्ट नहीं था। मैं "कम से कम तीन इंटरफेस में से एक को लागू करता है" जांचने पर विचार करता हूं "कम बोझिल होने के लिए दृष्टिकोण। कम से कम जब "if" कथन के दर्जनों के साथ परिदृश्य की तुलना में। –
मुझे यकीन नहीं है कि अगर हम दर्जनों से बयान देते हैं तो हम 3 से कहाँ जा रहे हैं ... मेरा जवाब 3 अगर बयानों का उपयोग करेगा, तो क्या आप यही खोज रहे हैं? एक बार में तीन इंटरफेस की जांच के साथ समस्या यह है कि आप जा रहे हैं तो फिर से कुछ अलग-अलग इंटरफ़ेस के आधार पर कुछ अलग करने की आवश्यकता है, तो यह आपको क्या प्राप्त करता है? –