Nasıl Java için dönüştüğünde Stringiçin CharSequence?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
Nasıl Java için dönüştüğünde Stringiçin CharSequence?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
Yanıtlar:
String IS-A'dan beri CharSequence, Stringihtiyacınız olan her yere geçebilir CharSequenceveya Stringaşağıdakilere a atayabilirsiniz CharSequence:
CharSequence cs = "string";
String s = cs.toString();
foo(s); // prints "string"
public void foo(CharSequence cs) {
System.out.println(cs);
}
Bir dönüştürmek istiyorsanız CharSequencebir karşı Stringsadece kullanmak, toStringher somut uygulama hayata geçirmek gerekir yöntemi CharSequence.
Umarım yardımcı olur.
CharSequencebir karşı Stringaçık bir döküm olmadan.
Stringa CharSequence.
CharSequence. Sadece Stringbir CharSequencedeğişkenin örneğini atar Stringve CharSequencearabirimi uyguladığından kod çalışır.
Düz cevap:
String s = "Hello World!";
// String => CharSequence conversion:
CharSequence cs = s; // String is already a CharSequence
CharSequencebir arayüzdür ve Stringsınıf uygular CharSequence.
CharSequence bir arayüzdür ve String, StringBuilder, StringBuffer ve diğer pek çok uygulamadan biridir.
Yani, kullanmak gibi InterfaceName i = new ItsImplementation()kullanabileceğiniz CharSequence cs = new String("string")veya basitçeCharSequence cs = "string";
Kullanabilirsiniz
CharSequence[] cs = String[] {"String to CharSequence"};
OP'nin sorusuna kendi sorunumu göndererek bazı (olası) bağlamlar sağlamaya çalışmak Scala çalışıyorum, ama tüm referans Java türleri alıyorum hata mesajları ve hata mesajı çok CharSequence bir dize değil şikayet derleyici gibi okur . Dize CharSequence arabirimini uygulayan kaynak kodunda doğruladım, ancak hata iletisi, sorunun gerçek kaynağını gizlerken Dize ve CharSequence arasındaki farka dikkat çekiyor:
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)
Bu sorunu dize / CharSequence değil, java.lang.Iterable ve Scala yerleşik yerleşik Iterable arasında bir uyumsuzluk olduğunu fark ile bu sorunu gidermek mümkün.
scala> val header = String.join(",", coll: _*)
header: String = Item,a,b
Benim özel sorunum Scala'daki cevaplarla da çözülebilir : bir dizi dizeye katılın
Özetle, OP ve benzer sorunlarla karşılaşan diğerleri, hata mesajlarını çok yakından ayrıştırmalı ve başka tür dönüşümlerin neler olabileceğini görmelidir.