2012-05-03 16 views
20

मैं विरासत में मिला एक प्रोग्राम डीबग करने की कोशिश कर रहा हूँ। इस कार्यक्रम के तार, सरणी सूची और संग्रह, प्रकार के बीच कास्टिंग के बहुत सारे शामिल है, और मैं जब कंसोल (जैसे करने के लिए मुद्रित कुछ स्ट्रिंग जोड़तोड़ (substring, आदि)क्या जावा डेटा प्रकार को कंसोल में आउटपुट करने का कोई तरीका है?

डेटा देखने तार की तरह करने की जरूरत है, यह पाठ की एक पंक्ति, जैसे Johnson, John या Chicago Region), लेकिन मेरा कोड विभिन्न index out of range त्रुटियों के साथ त्रुटि कर रहा है, यह बताता है कि स्ट्रिंग में डालने का मेरा कोड काम नहीं कर रहा है।

मैं यह जानने की कोशिश करना चाहता हूं कि कौन से डेटा प्रकार आ रहे हैं और यह सत्यापित करने के लिए कि मेरे प्रोग्राम अपेक्षित रूप से कार्य कर रहे हैं, मेरी विधियों को छोड़ रहे हैं। जावा में फ़ील्ड प्रकार खोजने का कोई तरीका है? एक परिपूर्ण दुनिया में, मैं प्रत्येक चरण में कंसोल आउटपुट उत्पन्न कर सकता हूं जो मुझे डेटा मान देगा और चाहे वह स्ट्रिंग, सरणी सूची या संग्रह हो। क्या यह किया जा सकता है?

+1

वैसे, अगर आपको 'क्लासकास्ट एक्सेप्शन' नहीं मिल रहा है, तो 'स्ट्रिंग' * पर कास्ट * काम कर रहा है। –

उत्तर

37

किसी भी वस्तु का एक उदाहरण को देखते हुए, आप इसे कॉल कर सकते हैं कक्षा उद्देश्य यह है कि वस्तु के प्रकार का वर्णन का एक उदाहरण पाने के लिए getClass() विधि है।

कक्षा वस्तु का उपयोग करना, आप आसानी से मुद्रित कर सकते हैं यह प्रकार का नाम है:

Integer number=Integer.valueOf(15); 
System.out.println(number.getClass().getName()); 

इस प्रिंट वर्ग है, जो उदाहरण के लिए है की पूरी तरह से योग्य नाम सांत्वना देने:

java.lang.Integer 

हैं आप एक संक्षिप्त संक्षिप्त आउटपुट चाहते हैं, इसके बजाय आप इसका उपयोग कर सकते हैं:

Integer number=Integer.valueOf(15); 
System.out.println(number.getClass().getSimpleName()); 

getSimpleName() आपको केवल क्लास का नाम: जानकारी के लिए देखते हैं this SO question:

Integer 

आदिम चर के प्रकार के मुद्रण में थोड़ा और अधिक जटिल है।

5

किसी ऑब्जेक्ट के लिए x, आप x.getClass() प्रिंट कर सकते हैं।

+1

मैं x.getClass.getName() –

+0

करता हूं 'शून्य' उदाहरणों के बारे में क्या? –

+0

@PaulVargas 'if (object == null) {south (" null ")}' – Mob

0

बस किसी भी वस्तु

0

instance.getClass() में .class.getName(); कर जाने के लिए अगर आप सिर्फ प्रकार प्रिंट करना चाहते हैं तरीका है। यदि आप प्रकार के आधार पर व्यवहार को शाखा बनाना चाहते हैं तो आप instanceof का भी उपयोग कर सकते हैं।

if (x instanceof String) 
{ 
    // handle string 
} 
0

getClass() विधि का उपयोग करें।

Object o; 
System.out.println(o.getClass()); 
संबंधित मुद्दे

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