2011-07-06 11 views
18

में परिवर्तित करने का सबसे प्रभावी तरीका CharSequence की अपेक्षा करने वाले किसी विधि को एक सिंगल पास करने का सबसे प्रभावी तरीका क्या है?एक सिंगल चार को एक CharSequence

यह मैं क्या मिल गया है है:

textView.setText(new String(new char[] {c})); 

the answers given here के अनुसार, इस जहां इनपुट एक चरित्र सरणी है यह करने का एक समझदार तरीका है। मैं सोच रहा था कि क्या एक स्नीकी शॉर्टकट था जो मैं एकल-चार मामले में आवेदन कर सकता था।

उत्तर

3

आशुलिपि, सबसे कम के रूप में आपके द्वारा लिखे गए संभव वर्ण:

c+""; // where c is a char 

पूर्ण में:

textView.setText(c+""); 
9

Character.toString(char c) विधि के क्रियान्वयन को देखते हुए पता चलता है कि वे लगभग का उपयोग एक ही कोड जिसका आप उपयोग करते हैं:

public String toString() { 
     char buf[] = {value}; 
     return String.valueOf(buf); 
    } 

पठनीयता के लिए, आपको केवल Character.toString(c) का उपयोग करना चाहिए।

एक और कारगर तरीका शायद होगा

new StringBuilder(1).append(c); 

यह निश्चित रूप से और अधिक कुशल है कि + ऑपरेटर का उपयोग क्योंकि, जावाडोक के अनुसार:

जावा भाषा स्ट्रिंग संयोजन ऑपरेटर के लिए विशेष सहायता प्रदान करता है (+), और तारों के लिए अन्य वस्तुओं के रूपांतरण के लिए। स्ट्रिंग संयोजन StringBuilder (या StringBuffer) वर्ग और उसके संलग्न विधि

+1

स्पष्टीकरण के लिए धन्यवाद। मैं स्वीकार किए गए उत्तर के साथ जा रहा हूं क्योंकि मुझे संदेह है कि स्ट्रिंग क्लास में मूल्य -10() कार्यक्षमता को कुशलतापूर्वक समर्थन देने के लिए सिंगल-कैरेक्टर स्ट्रिंग्स की अंतर्निर्मित तालिका हो सकती है। –

2

के माध्यम से कार्यान्वित किया जाता है संयोजन के बिना एक समाधान यह है:

Character.valueOf(c).toString(); 
3

सबसे कॉम्पैक्ट CharSequence आप वर्ण के एक मुट्ठी भर है जब आप प्राप्त कर सकते हैं CharBuffer है। अपने चार मूल्य के साथ इस को प्रारंभ करने के लिए:

CharBuffer.wrap(new char[]{c}); 

कहा जा रहा है, तार का उपयोग कर एक निष्पक्ष थोड़ा और अधिक पठनीय और साथ काम करने के लिए आसान है।

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