अद्यतन: जैसा कि @PaulGroke नीचे बताता है, जावा 7 के साथ चीजें बदल गई हैं: अब AutoCloseable है। जो धाराओं से बंधे नहीं हैं और नए try-with-resources निर्माण द्वारा समर्थित हैं।क्या बंद करने योग्य को .NET के IDISposable के लिए जावा समकक्ष के रूप में उपयोग किया जाना चाहिए?
AutoCloseable
.NET के IDisposable
इंटरफ़ेस के लिए प्रत्यक्ष जावा समकक्ष है।
Closeable
इंटरफ़ेस जावा 1.5 में पेश किया कसकर धाराओं से जुड़ा हुआ है, और यहां तक कि IOException
के लिए एक अपवाद विनिर्देशन होता है। इससे पता चलता है कि इसे सामान्य प्रयोजन क्लीनअप तर्क के बजाय केवल धाराओं या अन्य आईओ संबंधित गतिविधियों के लिए उपयोग किया जाना चाहिए।
निश्चित रूप से close()
विधि के लिए विवरण एक धारा/आईओ संदर्भ के बाहर पूरी तरह से कोई मतलब नहीं होगा:
void close() throws IOException
इस धारा और विज्ञप्ति किसी भी प्रणाली के साथ जुड़े संसाधनों बंद करता है।
इसलिए मैं अपने खुद के इंटरफेस, Disposable
घोषित करना चाहिए, उस पर एक Dispose()
विधि के साथ, और प्रयोग जो .NET के IDisposable
इंटरफेस के लिए एक एनालॉग के रूप में? या मुझे Closeable
का फिर से उपयोग करना चाहिए, भले ही यह एकदम सही फिट न हो?
@Pharap आपके द्वारा लिंक किए गए पृष्ठ पर उल्लिखित 'आईडीस्पोजेबल' को लागू करने के लिए दो अलग-अलग पैटर्न हैं। 'ऑब्जेक्ट को कार्यान्वित करना। फाइनलाइज()' केवल अपेक्षाकृत दुर्लभ परिदृश्य में आवश्यक है कि आपकी वस्तु सीधे अप्रबंधित संसाधनों को आवंटित करने के लिए ज़िम्मेदार है (यानी मूल संसाधन जो एक सुरक्षित हैंडल से लिपटे नहीं हैं)। आपका बयान है कि "आईडीआईएसपीबल 'को लागू करने के लिए .NET के अनुशंसित तरीके [...] के लिए' ऑब्जेक्ट। फ़ाइनलाइज()' 'का उपयोग करने की आवश्यकता है पूरी तरह से सही नहीं है। –