मुझे यकीन नहीं है कि इसके लिए क्या कारण है लेकिन मैं कक्षा का उदाहरण दे सकता हूं जो CharSequence
लागू करता है। यह java.nio.CharBuffer
है।
सैद्धांतिक रूप से यह indexOf()
को लूप में charAt()
पर कॉल करके कार्यान्वित कर सकता है। लेकिन यह काम नहीं करेगा क्योंकि उपयोगकर्ता अपेक्षा करता है। हम 2 स्थितियों के बीच अंतर नहीं कर सकते: चरित्र अभी तक नहीं है और चरित्र वहां नहीं है और वहां नहीं होगा। दूसरे मामले में indexOf()
अनुबंध द्वारा -1 वापस करना चाहिए। पहले मामले में यह तब तक इंतजार करना चाहिए जब तक सभी बाइट आते हैं। लेकिन CharBuffer गैर-अवरुद्ध IO से संबंधित है, इसलिए यह अवरुद्ध नहीं हो सकता है।
मेरा मानना है कि यह कम से कम संभावित कारण बताता है।
संपादित करें:
@Pacerier द्वारा बहुत ही मूल्यवान टिप्पणी के बाद मैं निम्नलिखित जोड़ना चाहते हैं। IMHO CharSequence
एक बहुत ही सामान्य इंटरफेस के रूप में जो विभिन्न परिस्थितियों में उपयोग किया जाता है। इस इंटरफेस के सबसे प्रसिद्ध इंफोर्टर String
, StringBuffer
और StringBuilder
हैं जो पूरी सामग्री को डेटा संरचना में रखते हैं जो किसी भी चरित्र तक सीधे पहुंच की अनुमति देता है। हालांकि यह सामान्य स्थिति में गलत है। java.nio.CharBuffer
ऐसे मामले का एक उदाहरण है।
तो आप जो पूछ रहे हैं वह है: 'CharSequence' में' indexOf' विधि क्यों नहीं है? –
स्ट्रिंगबफर और स्ट्रिंगबिल्डर के पास इंडेक्सऑफ विधियां हैं, हालांकि ... – Thilo
@ थिलो - किस तरह की सवाल पूछती है कि CharSequence उस व्यवहार को क्यों निर्दिष्ट नहीं करता है? (और हालांकि java.nio.CharBuffer और javax.swing.text.Segment 'indexOf' को लागू नहीं करता है, वे आसानी से कर सकते हैं।) –