2010-11-22 10 views
8

एक विधि Object या Object[] प्रकार String के प्रकार लौट रही है, लेकिन अगर मैं String[] के साथ कास्टिंग कर रहा हूं, तो इसमें सिंगल स्ट्रिंग होने पर क्लास कास्ट अपवाद दिया जा रहा है। मैं इसे कैसे हल करूं?जावा में ऑब्जेक्ट स्ट्रिंग या स्ट्रिंग ऐरे की जांच कैसे करें?

क्या यह जांचने का कोई तरीका है कि इसमें String या String[] है?

उत्तर

18

ज़रूर, का उपयोग instanceof operator:

if (x instanceof String) { 
    ... 
} 

if (x instanceof String[]) { 
    ... 
} 

आदि यह यह करने के लिए है करने के लिए आदर्श नहीं है, ध्यान रखें कि आप ... वहाँ किसी भी तरह से आप अपने API नया स्वरूप इस से बचने के लिए कर सकता है?

+2

यह आदर्श क्यों नहीं है? ऑब्जेक्ट ओरिएंटेशन चिंताओं के कारण – Konerak

+3

। 'Exampleof' का उपयोग करने का तथ्य बराबर है, इस मामले में, यह कहने के लिए कि "मेरी विधि सभी मामलों में' स्ट्रिंग []' लौटा सकती है (क्योंकि 'स्ट्रिंग' को हमेशा 'स्ट्रिंग [1] 'में रखा जा सकता है) , लेकिन जैसा कि मैं इसे करने के लिए पर्याप्त स्मार्ट नहीं था, मैंने कुछ भी वापस करने की पेशकश की और आपको इसका सामना करने दिया। " – Riduidel

+1

एपीआई को बदलने का सबसे आसान तरीका हमेशा स्ट्रिंग [] को स्ट्रिंग स्ट्रिंग [] के आकार 1 के साथ वापस करना है। – extraneon

7

हमेशा String[] वापस करने के लिए विधि को फिर से लिखें, यहां तक ​​कि केवल एक ही होने पर भी।

अभी तक बेहतर है, इसे List<String> पर वापस करें और एकल-तत्व मामले के लिए Collections.singletonList() का उपयोग करें।

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