ब्लॉक उद्धरण जावा डॉक्स से कर रहे हैं -ऑब्जेक्टइनपुटस्ट्रीम फ़िल्टर इनपुटपुट का विस्तार नहीं करना चाहिए?
एक FilterInputStream कुछ अन्य इनपुट धारा है, जो यह डेटा के अपने बुनियादी स्रोत रास्ते डेटा बदलने या के रूप में उपयोग करता है, संभवतः अतिरिक्त कार्यक्षमता प्रदान करने में शामिल है ।
एक DataInputStream एक आवेदन एक अंतर्निहित इनपुट धारा से आदिम जावा डेटा प्रकार पढ़ा एक मशीन स्वतंत्र ढंग से कर सकते हैं।
DataInputStream
इसलिए फैली FilterInputStream
एक ObjectInputStream एक ObjectOutputStream का उपयोग कर आदिम डेटा deserializes और वस्तुओं पहले से लिखा।
हालांकि, किसी कारण से ObjectInputStream
FilterInputStream
विस्तार नहीं करता है, भले ही यह भी अंतर्निहित इनपुट धारा से वस्तुओं (इस बार और नहीं आदिम प्रकार) पढ़ रहा है। संबंधित वर्गों की शाखाकरण यहां दी गई है।
उसी के लिए एक डिजाइन तर्क है है?
फ़िल्टरइनपुटस्ट्रीम इनपुटस्ट्रीम के अलावा कोई अतिरिक्त विधि नहीं जोड़ता है; यह इनपुटस्ट्रीम –
@ वैभव बाजपेई में प्रदान की गई सभी विधियों को लागू करता है: यदि आप सूर्य के कार्यान्वयन को देखते हैं, तो आप देखेंगे कि यह इनपुटस्ट्रीम को पार नहीं करता है, लेकिन ब्लॉकडाटाइनपुटस्ट्रीम नामक एक निजी आंतरिक वर्ग है। एक बार जब आपके पास FilterInputStream.in मेमवर के लिए कोई उपयोग नहीं है, तो आपको वास्तव में इसकी आवश्यकता नहीं है। –
@ वैभव बाजपाई: मैंने पाया कि कुछ मामलों में जब मुझे एक प्रतिनिधि इनपुट/आउटपुट स्ट्रीम लागू करना पड़ा, तो मैं फ़िल्टरइनपुटस्ट्रीम को छोड़कर और विशेष रूप से यह बुराई चचेरे भाई फ़िल्टरऑटपुटस्ट्रीम को छोड़कर हमेशा बेहतर था। फ़िल्टरऑटपुटस्ट्रीम के मामले में यह लूप के संदर्भ में 'लिखना (बाइट [])' विधि लागू करता है जो बफर के आकार को 'लिखने (int)' कहते हैं। मैंने अपने संस्करण के साथ नियमित स्ट्रीम स्विच करने के बाद क्यों बिल्ली का प्रदर्शन इतना बुरा था, यह जानने का प्रयास करने में एक सुंदर 2 दिन बिताए हैं। जब आप बेस क्लास के कार्यान्वयन को जानना चाहते हैं तो यह सबसे खराब मामलों में से एक है। –