문자열을 CharSequence로 변환하는 방법?


265

어떻게 변환 StringCharSequence자바로?


16
문제는 무의미합니다. 문자열을 CharSequence로 변환하는 것은 플루트를 악기로 변환하는 것과 같습니다. 문자열은 이미 CharSequence입니다. String 클래스는 CharSequence 인터페이스를 구현합니다.
Jeff Scott Brown

3
OP의 혼동은 인터페이스
Raedwald

9
@JeffScott이 질문은 실제로 의미가 있습니다 .Android 또는 Java 문서를 읽고 CharSequence가 클래스가 아니라는 세부 사항을 놓친 사람에게는 합법적 인 경이입니다. 귀하의 의견은 저에게 도움이되었지만 질문이 그 자체로 표현되지 않았다면, 그 질문을 찾지 못했을 것입니다. 실제로 가치보다 더 많은 답변을 찾는 데 더 많은 시간을 보냈습니다.)
Kheldar

나는 그루비 문제의 맥락에서이 질문에 도달했다 : Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
BlackEye

다음은 @JeffScottBrown이 자신의 의견을 다시 말하도록 조언하는 방법입니다. "문자열 클래스는 CharSequence 인터페이스를 구현하여 (IS-A) CharSequence 대신 String을 전달할 수 있습니다. 이는 플루트를 플루트 IS-A 악기이기 때문에 악기 "
Vighnesh

답변:


261

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);
}

당신은 변환하려면 CharSequenceA를 String그냥 사용 toString의 모든 구체적인 구현에 의해 구현되어야 방법 CharSequence.

도움이 되길 바랍니다.


13
당신이 할당 할 수 있다는 점을 제외하고 CharSequenceA와를 String명시 적 캐스트없이.
gustafc

1
예를 고쳤습니다. 나는 다른 방법으로, 즉에 a String를 할당하는 것을 의미했습니다 CharSequence.
João Silva

4
당신이 올바른지. 실제로 인터페이스입니다. 그러나 해당 코드는를 인스턴스화하지 않습니다 CharSequence. 그것은 단순히의 인스턴스를 할당 StringA와 CharSequence변수, 이후 String구현하는 CharSequence인터페이스, 코드 작동합니다.
João Silva

5
이것은 답이 아닙니다. 질문은 문자열->-> CharSequence입니다. 답은 반대입니다.
trante

3
이것은 둘 다 대답합니다. 포스터는 먼저 문자열이 CharSequence임을 설명하여 String-> CharSequence 문제를 간단하게 해결합니다. 그런 다음 포스터는 CharSequence에서 String으로 이동하는 방법에 대한 답변을 제공합니다.
Alex A.

62

정답 :

String s = "Hello World!";

// String => CharSequence conversion:

CharSequence cs = s;  // String is already a CharSequence

CharSequence인터페이스이며 String클래스가 구현 CharSequence합니다.


13

CharSequence는 인터페이스이고 String은 StringBuilder, StringBuffer 및 기타 여러 구현 이외의 구현 중 하나입니다.

따라서을 사용하는 것처럼 간단하게 InterfaceName i = new ItsImplementation()사용 CharSequence cs = new String("string")하거나CharSequence cs = "string";


3

당신이 사용할 수있는

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

8
Stack Overflow Lucas에 오신 것을 환영합니다. 코드 스 니펫보다 자세한 설명을 제공하십시오. 우리에게는 명백 할 수도 있지만,이 코드가 왜 질문에 대답하는지 다른 사람들에게 알려주십시오.
Jean-Rémy Revy

문자열을 배열에 래핑해도 String이 CharSequence라는 점을 만드는 데 도움이되지 않습니다 (따라서 CharSequence의 배열이 String의 배열 임).
tishma

1
CharSequence [] cs = new CharSequence [] { "문자열을 CharSequence"};
avez raj December

1

내 문제를 게시하여 OP의 질문에 대한 (가능한) 컨텍스트를 제공하려고합니다. 스칼라에서 일하고 있지만 모든 참조 Java 유형을 얻는 오류 메시지와 오류 메시지는 CharSequence가 String 이 아니라고 불평하는 컴파일러와 매우 유사합니다 . 소스 코드에서 String이 CharSequence 인터페이스를 구현한다는 것을 확인했지만 오류 메시지는 문제의 실제 원인을 숨기는 동안 String과 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)

문제가 String / CharSequence가 아니라 java.lang.Iterable과 Scala의 내장 Iterable 사이의 불일치라는 인식 으로이 문제를 해결할 수있었습니다.

scala> val header = String.join(",", coll: _*)
header: String = Item,a,b

내 특정 문제는 Scala 의 답변을 통해 해결할 수도 있습니다 . 반복 가능한 문자열 결합

요약하면 OP 및 유사한 문제가 발생하는 다른 사용자는 오류 메시지를 매우 자세히 분석하고 다른 유형 변환과 관련이 있는지 확인해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.