2011-05-31 10 views
6

मैं सिर्फ MessageFormat साथ खेल रहा हूँ, लेकिन यह ठीक संकलित जब मैं MessageFormat को प्रारूप विधि एक स्ट्रिंग पारित करने के लिए कोशिश लेकिन फिर मैं एक क्रम classcast अपवाद मिलता है। कोड यहाँ है।क्लासकास्ट अपवाद जब स्ट्रिंग से ऑब्जेक्ट में परिवर्तित हो रहा है .. क्यों?

MessageFormat format = new MessageFormat(""); Object obj = Integer.toHexString(10); format.format(obj);

अब क्रम अपवाद मैं इस प्रकार है।

थ्रेड "मुख्य" java.lang.ClassCastException में अपवाद: java.lang.String को [Ljava.lang.Object; java.text.MessageFormat.format (अज्ञात स्रोत) java.text.Format.format (अज्ञात स्रोत) पर JavaCore2.Codepoint.main पर पर (Codepoint.java:21)

उत्तर

6

MessageFormat.format() एक तर्क लेता है Object[] (Object सरणी) टाइप करें, जबकि आप एक Object में गुजर रहे हैं।

आप अपने Integer से बाहर एक सरणी बनाने के लिए करना होगा: (

MessageFormat format = new MessageFormat("{0}"); 
Object[] args = { Integer.toHexString(10) }; 

String result = format.format(args); 
+2

यह सही जवाब जावाडोक है स्पष्ट रूप से कहा गया है कि एक विवाद प्रारूप (obj) ' प्रारूप के बराबर है obj, नई StringBuffer(), नया फील्डपोजिशन (0))। टूस्ट्रिंग(); 'जो बदले में (यदि आप किसी अन्य जावाडोक पर कूदते हैं) प्रारूप के बराबर है (ऑब्जेक्ट []) तर्क, परिणाम, pos)। ओरेकल में कितने अच्छे लोग काम करते हैं! –

+1

यह अब तक का सबसे खराब एपीआई है जिसे मैंने मानक जावा लाइब्रेरी में देखा है ... – kap

+0

सहमत हैं। यह हर बार मुझे मिलता है। –

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