Nasıl bir String CharSequence dönüştürmek için?


265

Nasıl Java için dönüştüğünde Stringiçin CharSequence?


16
Soru biraz mantıklı değil. Bir String'i CharSequence'a dönüştürmek, flütü müzik enstrümanına dönüştürmek gibidir. Bir String zaten bir CharSequence'dır. String sınıfı, CharSequence arabirimini uygular.
Jeff Scott Brown

3
OP'nin kafa karışıklığı , bir arayüze programlamanın
Raedwald

9
@JeffScottBrown aslında mantıklı, Android veya Java dokümanı aracılığıyla okuyan ve CharSequence'ın bir sınıf olmadığı detayını eksik olan herkes için meşru bir merak. Yorumunuz bana yardımcı oldu, ancak soru bu şekilde ifade edilmemiş olsaydı,
bulamazdım ve

Bu soruya harika bir Sorun bağlamında geldim:Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
BlackEye

Ben şöyle yorumunu tavsiye ederim. müzik aleti çünkü bir flüt IS-A müzik aleti "
Vighnesh

Yanıtlar:


261

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.


13
Eğer bir atama olamayacağını hariç CharSequencebir karşı Stringaçık bir döküm olmadan.
gustafc

1
Örnek düzeltildi, teşekkürler. Ben, yani bir atama, başka bir yol anlamına Stringa CharSequence.
João Silva

4
Haklısın. Gerçekten de bir arayüz. Ancak, bu kod a'yı başlatmaz CharSequence. Sadece Stringbir CharSequencedeğişkenin örneğini atar Stringve CharSequencearabirimi uyguladığından kod çalışır.
João Silva

5
Cevap bu değil. Soru String -> to -> CharSequence. Cevap tersidir.
trante

3
Bu her ikisine de cevap verir. Poster öncelikle bir String'in CharSequence olduğunu açıklayarak String -> CharSequence problemini önemsiz bir şekilde çözer. Ardından poster CharSequence'tan String'e nasıl gidileceğini cevaplar.
Alex

62

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.


13

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";


3

Kullanabilirsiniz

CharSequence[] cs = String[] {"String to CharSequence"};

8
Stack Overflow Lucas'a hoş geldiniz. Lütfen kod pasajından daha fazla açıklama sağlayın. Bizim için açık olabilir, ancak diğerlerine bu kodun soruyu neden yanıtladığını bildirmelerine yardımcı olun.
Jean-Rémy Revy

Bir dizeyi bir diziye sarmak, String'in bir CharSequence (ve bu nedenle CharSequence dizisinin String dizisi olduğu) olduğuna işaret etmeye yardımcı olmaz.
tishma

1
CharSequence [] cs = yeni CharSequence [] {"String to CharSequence"};
avez raj

1

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.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.