कैसे कन्वर्ट करने के लिए String
करने के लिए CharSequence
जावा में?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
कैसे कन्वर्ट करने के लिए String
करने के लिए CharSequence
जावा में?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
जवाबों:
String
IS-A के बाद से CharSequence
, आपको String
जहां भी जरूरत हो, पास कर सकते हैं CharSequence
या a String
को असाइन कर सकते हैं CharSequence
:
CharSequence cs = "string";
String s = cs.toString();
foo(s); // prints "string"
public void foo(CharSequence cs) {
System.out.println(cs);
}
यदि आप a CharSequence
को a में परिवर्तित करना चाहते हैं String
, तो बस उस toString
विधि का उपयोग करें जिसे प्रत्येक ठोस कार्यान्वयन द्वारा कार्यान्वित किया जाना चाहिए CharSequence
।
आशा करता हूँ की ये काम करेगा।
CharSequence
एक String
बिना किसी स्पष्ट कास्ट के असाइन नहीं कर सकते ।
String
को असाइन करें CharSequence
।
CharSequence
। यह केवल String
एक CharSequence
चर का उदाहरण देता है , और चूंकि इंटरफ़ेस String
लागू करता CharSequence
है, कोड काम करता है।
सीधा उत्तर:
String s = "Hello World!";
// String => CharSequence conversion:
CharSequence cs = s; // String is already a CharSequence
CharSequence
एक इंटरफ़ेस है, और String
क्लास लागू करता है CharSequence
।
CharSequence एक इंटरफ़ेस है और StringBuilder, StringBuffer और कई अन्य के अलावा String इसका कार्यान्वयन है।
इसलिए, जैसा आप उपयोग करते हैं InterfaceName i = new ItsImplementation()
, आप उपयोग कर सकते हैं CharSequence cs = new String("string")
या बसCharSequence cs = "string";
आप उपयोग कर सकते हैं
CharSequence[] cs = String[] {"String to CharSequence"};
अपनी परेशानी पोस्ट करके ओपी के प्रश्न के लिए कुछ (संभव) संदर्भ प्रदान करने का प्रयास कर रहा हूं। मैं स्काला में काम कर रहा हूं, लेकिन त्रुटि संदेश मुझे सभी संदर्भ जावा प्रकार मिल रहे हैं, और त्रुटि संदेश कंपाइलर की तरह बहुत कुछ पढ़ता है जो शिकायत करता है कि CharSequence एक स्ट्रिंग नहीं है। मैंने स्रोत कोड में पुष्टि की है कि स्ट्रिंग CharSequence इंटरफ़ेस को लागू करता है, लेकिन त्रुटि संदेश स्ट्रिंग और CharSequence के बीच अंतर पर ध्यान आकर्षित करता है, जबकि मुसीबत के वास्तविक स्रोत को छुपाता है:
scala> cols
res8: Iterable[String] = List(Item, a, b)
scala> val header = String.join(",", cols)
<console>:13: error: overloaded method value join with alternatives:
(x$1: CharSequence,x$2: java.lang.Iterable[_ <: CharSequence])String <and>
(x$1: CharSequence,x$2: CharSequence*)String
cannot be applied to (String, Iterable[String])
val header = String.join(",", cols)
मैं इस समस्या को इस अहसास के साथ ठीक करने में सक्षम था कि समस्या स्ट्रिंग / चरित्रहीनता नहीं थी, बल्कि java.lang.Iterable और स्काला के अंतर्निहित Iterable के बीच एक बेमेल थी।
scala> val header = String.join(",", coll: _*)
header: String = Item,a,b
मेरी विशेष समस्या को स्कैला के उत्तरों के माध्यम से भी हल किया जा सकता है : तार के पुनरावृत्ति में शामिल हों
सारांश में, ओपी और अन्य जो समान समस्याओं के साथ आते हैं, उन्हें त्रुटि संदेशों को बहुत बारीकी से पार्स करना चाहिए और देखना चाहिए कि अन्य प्रकार के रूपांतरण क्या हो सकते हैं।