2010-03-04 20 views
28

जावा पुस्तकालयों के डिजाइन के बारे में एक सहयोगी से बात कर रहा था। मैंने उल्लेख किया कि मुझे हमेशा यह मजाकिया लगेगा कि एडब्ल्यूटी/स्विंग कक्षाओं ने कहा कि अनिवार्य रूप से यूआई विजेट पर एक अवलोकन इंटरफ़ेस प्रदान किया गया था जिसे वास्तव में "श्रोताओं" कहा जाता था।क्या java.util.Observable कहीं भी इस्तेमाल किया जाता है?

जहां उन्होंने मुझे यह इंगित करके मुझे फर्श दिया कि java.util.Observer और java.util.Observable के साथ एक नाम संघर्ष हुआ होगा, जो कि जेडीके 1.0 के आसपास रहा है। मैंने पहले कभी उनके बारे में नहीं सुना होगा।

जावाडॉक्स में सूचीबद्ध कोई उपयोग नहीं है और google/googlecode अधिक से अधिक नहीं आते हैं, तो क्या किसी को पता है कि उन्हें जेडीके में कहीं भी उपयोग किया जाता है? ऐसा लगता है कि उन्हें कोई सामान्य प्यार नहीं मिला है, इसलिए संभवतः वे "लोकप्रिय" नहीं हैं। क्या किसी ने उन्हें उपयोगी पाया है?

+0

आप इसे यहां रिपोर्ट करने पर भी विचार कर सकते हैं: http://stackoverflow.com/questions/1697215/what-is- आपका पसंदीदा-जावा-एपीआई-परेशानता – ewernli

+0

धन्यवाद, लेकिन यह परेशान नहीं है। बस थोड़ा सा दुखद – MHarris

+1

मैंने उन्हें 1996 में उपयोगी पाया, इससे पहले कि जावाबीन और एडब्ल्यूटी 2.0 ने भाषा की एक और व्यापक विशेषता सुनने के लिए समर्थन दिया। उन सभी घटना श्रोता इंटरफेस के लिए प्रोटोटाइप के रूप में सोचें जो आज आप पूरे जेडीके में देखते हैं। वे केवल ऐतिहासिक रुचि के हैं। –

उत्तर

12

Observer और Observable अभी भी बहुत सारे एक्लिप्स विज़ार्ड कोड में उपयोग किए जाने के लिए उपयोग किए जाते हैं जब इनपुट बॉक्स में सामान बदलते हैं, इसलिए विज़ार्ड स्वयं अपडेट किया जा सकता है। मुझे इन चीजों में से कुछ के साथ काम करना पड़ा, इसे अपनी जरूरतों के लिए बदलना पड़ा .. :)

18

उनका उपयोग नहीं किया जाता है, क्योंकि उनका डिज़ाइन त्रुटिपूर्ण है: वे type safe नहीं हैं। आप किसी भी ऑब्जेक्ट को संलग्न कर सकते हैं जो ऑब्जर्वर को किसी भी अवलोकन करने के लिए लागू करता है, जिसके परिणामस्वरूप लाइन के नीचे सूक्ष्म बग हो सकती है।

उन्हें एक प्रकार के सुरक्षित इंटरफ़ेस के अंदर लपेटना स्क्रैच से पैटर्न को कार्यान्वित करने के समान काम के बारे में है, इसलिए मुझे लगता है कि बाद वाले मामलों में बाद वाले को प्राथमिकता दी जाती है।

यह उन चीजों में से एक है जो जावा 1.0 में त्रुटिपूर्ण डिजाइन विकल्पों के कारण समय के दबाव में किए गए हैं (अन्य में जावा 1.0 संग्रह API और java.util.Date) शामिल हैं, लेकिन सार्वजनिक एपीआई की प्रकृति के कारण अब और हटाया नहीं जाएगा (केवल बहिष्कृत)।

+1

@ पीटर टोरोक: आप केवल एक ऑब्जेक्ट संलग्न कर सकते हैं जो * पर्यवेक्षक * इंटरफ़ेस को * पर्यवेक्षण * में लागू करता है, यह बिल्कुल सामान्य है। मुझे आशा है कि उन्हें एक प्रकार के सुरक्षित इंटरफ़ेस के अंदर लपेटकर आप जेनिक्स का उपयोग करने के बारे में सोच नहीं रहे हैं, क्योंकि यह टाइप एरर के कारण पर्यवेक्षक/अवलोकन योग्य के लिए काम नहीं कर रहा है (ठीक है, यह काम करता है, लेकिन केवल मामूली सरल मामले के लिए, जहां मूल अवलोकन करने योग्य काम भी)। लेकिन यह देखते हुए, एक गायब का उपयोग करके स्क्रैच से कार्यान्वित करना इतना आसान है कि इन पुराने 1.0 अवशेषों का उपयोग करने में बहुत कुछ नहीं है। – SyntaxT3rr0r

+0

@WizardOfOdds मुझे यह पता है। मैंने कोड संपादित किया, उम्मीद है कि यह अब स्पष्ट है। –

+1

@WizardOfOdds: एक अवलोकन/पर्यवेक्षक के लिए जेनेरिक का उपयोग यह है कि पर्यवेक्षक को आम तौर पर इस संदर्भ में अपने प्रासंगिक प्रकार में कास्ट के रूप में देखने योग्य के रूप में उपयोग करना चाहिए। चूंकि जेडीके के पैटर्न कार्यान्वयन जेनेरिक प्रदान नहीं करता है, इसलिए यह क्लासकास्ट मुद्दों को आसानी से बढ़ाता है। –

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