2015-05-05 16 views
6

बढ़ाती है यह मुख्य रूप से जिज्ञासा से बाहर है। आप कैसे (यदि आप कर सकते हैं) एक वर्ग बनाते हैं जो स्ट्रिंग की नकल करता है। आप स्ट्रिंग को final के रूप में विस्तारित नहीं कर सकते हैं, इसलिए यह कोई नहीं है, लेकिन पूरी तरह से ब्याज कारक के लिए, मैंने एक ऑब्जेक्ट बनाने के बारे में सोचा जिसे शाब्दिक रूप से प्रारंभ किया जा सकता है (String s = "string";)।जावा क्लास जो स्ट्रिंग (या समान)

क्या यह संभव है? यदि हां, तो कैसे? यदि नहीं, क्यों?

+1

साइड नोट: मैंने हाल ही में क्रे स्ट्रिंग के चारों ओर अपने स्वयं के रैपर वर्ग पर लगाया; बस कुछ ऐसा करने के लिए जो यूनिट परीक्षणों के साथ अच्छी तरह से खेलता है (जैसा कि आपने सोचा - स्ट्रिंग अंतिम है, इसलिए आप स्ट्रिंग.क्लास के लिए नकली ऑब्जेक्ट्स नहीं बना सकते हैं); लेकिन अंत में मैंने फैसला किया कि लाभ मुसीबत के लायक नहीं है। – GhostCat

उत्तर

7

नहीं, जावा में अपने स्वयं के शाब्दिक प्रकारों को पेश करना संभव नहीं है। भाषा विनिर्देश संख्यात्मक, चरित्र और स्ट्रिंग अक्षर के लिए वाक्यविन्यास देता है, और यही वह है।

आप अपने स्वयं के निहित रूपांतरण के लिए एक मौजूदा प्रकार से एक शाब्दिक प्रतिनिधित्व के साथ अपने स्वयं के कस्टम प्रकार के लिए जोड़ सकते हैं नहीं है (जैसा कि आप सी # में कर सकते हैं - एक "करीब चचेरे भाई का एक उदाहरण के रूप में)। जावा के लिए

3

स्ट्रिंग सुरक्षा कारणों के लिए, अंतिम है।

हालांकि, जावा 1.4 के रूप में, स्ट्रिंग CharSequence इंटरफेस के एक कार्यान्वयन किया गया है। आप CharSequences के संदर्भ में अपने कोड लिखने, तो आप इसे किसी भी के खिलाफ चलाने के लिए सक्षम हो जाएगा उस इंटरफ़ेस का कार्यान्वयन, स्ट्रिंग शामिल है।

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