खैर, Character.class
के लिए स्रोत कोड देख:
public static String getName(int codePoint) {
if (!isValidCodePoint(codePoint)) {
throw new IllegalArgumentException();
}
String name = CharacterName.get(codePoint);
if (name != null)
return name;
...
}
CharacterName
एक पैकेज-निजी वर्ग जो lazily चरित्र के नाम (मुझे लगता है कि) के एक SoftReference<byte[]>
पूल initializes है। विशेष रूप से एक लाइन है, हालांकि ब्याज की है विभिन्न इनपुट धारा कंस्ट्रक्टर्स की एक श्रृंखला में दफन था:
private static synchronized byte[] initNamePool() {
...
return getClass().getResourceAsStream("uniName.dat");
...
}
अब, मैं कुछ खुदाई कर रहा हूँ, और किसी कारण से इस
uniName.dat
में मौजूद प्रतीत नहीं होता है ओपनजेडीके का स्रोत मुझे
uniName.dat
मिला - मेरे टीएक्स लाइव वितरण के हिस्से के रूप में, आश्चर्यजनक रूप से पर्याप्त। हेक्स संपादक में इसे खोलने से बाइट्स के जंबल्स सामने आते हैं - इसलिए सामग्री किसी भी तरह एन्कोड की जाती है। कैसे, मेरे पास कोई सुराग नहीं है।
मैं स्रोत कोड पर एक दूसरा रूप लेगा, लेकिन इसे डीकोड करने में कुछ समय लग सकता है, अगर मैं इसे बिल्कुल समझ सकता हूं।
इसके अतिरिक्त, ग्रहण की मेरी प्रतिलिपि में डीबगर टूटा हुआ प्रतीत होता है (किसी कारण या किसी अन्य कारण के लिए चर हल नहीं कर सकता), इसलिए मैं यह देखने के लिए इनपुट स्ट्रीम का निरीक्षण नहीं कर सकता कि यह कहां से पढ़ रहा है।
संक्षेप में
तो, जब तक आप कॉपी-पेस्ट की तरह CharacterName
, या अपने स्वयं कोड कि इस फाइल निकालता है रोलिंग से नाम पूल कोड लगता है कि आप निवासी जावा में ऐसा कर सकते हैं नहीं लगता है (यदि आप इसे पा सकते हैं यह सोचते हैं)
संपादित करें: uniName.dat
मिला! जावा मशीन में resources.jar
में स्थित मेरी मशीन पर। अभी भी बाइट्स का एक गुच्छा। तो आप या तो इस फ़ाइल को स्वयं पार्स कर सकते हैं (बहुत मज़ा नहीं, इसमें बहुत कुछ झुकाव शामिल है), या लाइब्रेरी का उपयोग करें (ऊपर सुझाया गया है)। इसलिए यदि आप मूल जावा तक सीमित हैं, तो आप CharacterName
कक्षा पर एक नज़र डालना चाहेंगे और देखें कि क्या आप HashMap<String, Character>
में कुछ प्राप्त कर सकते हैं या नहीं।
संभवतः एक डुप्लिकेट [एक चरित्र (या इसकी प्रकार की श्रेणी) का यूनिकोड नाम कैसे प्राप्त करें?] (Http://stackoverflow.com/questions/2443325/java-how-to-get-unicode-name-of -ए-कैरेक्टर-या-इसके-टाइप-श्रेणी) – Jonathan
@ जोनाथन ओपी – awksp
उपयोगकर्ता 3580294 के आसपास दूसरी तरफ जाना चाहता है कि आप कैसे समझा सकते हैं? –