Nasıl Java için dönüştüğünde String
iç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 String
iç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
, String
ihtiyacınız olan her yere geçebilir CharSequence
veya String
aş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 CharSequence
bir karşı String
sadece kullanmak, toString
her somut uygulama hayata geçirmek gerekir yöntemi CharSequence
.
Umarım yardımcı olur.
CharSequence
bir karşı String
açık bir döküm olmadan.
String
a CharSequence
.
CharSequence
. Sadece String
bir CharSequence
değişkenin örneğini atar String
ve CharSequence
arabirimi uyguladığından kod çalışır.
Düz cevap:
String s = "Hello World!";
// String => CharSequence conversion:
CharSequence cs = s; // String is already a CharSequence
CharSequence
bir arayüzdür ve String
sı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.