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


답변:


339

toString()방법 을 호출함으로써 .

이 순서와 같은 순서로이 순서의 문자를 포함한 캐릭터 라인을 돌려줍니다. 문자열의 길이는이 시퀀스의 길이입니다.


@TheOnlyAnil, 전화 setText(CharSequence)가 필요한 것을하지 않습니까?
마이크 사무엘

actionBar 제목을 클릭 가능하게 만들고 싶습니다.
TheOnlyAnil

@TheOnlyAnil, 아마도 질문으로 물어봐야합니다. 접선 적으로 관련된 질문에 대한 답변에 대한 의견은 요구 사항을 시도하기에 좋은 장소가 아닙니다.
마이크 사무엘

Stackoverflow로 질문을 게시 할 수 없습니다. : / btw 지난 밤에 그랬어. 사용자 정의 액션 바는 :)이 솔루션
TheOnlyAnil

1
출력하는 @WillByers는 CharSequence가 아닌 CharSequence 배열의 toString처럼 보입니다.
Mike Samuel

90

여기에는 약간의 문제가있는 미묘한 문제가 있습니다.

toString()메소드는의 기본 구현을 갖습니다 Object. CharSequence인터페이스입니다. toString()메소드는 해당 인터페이스의 일부로 표시 되지만 컴파일 타임에는 CharSequence toString()메소드 를 재정의하고 메소드의 javadoc이 메소드에 적용한 추가 제한 조건을 준수 하도록 강제하는 것은 없습니다 toString(). 즉,에서 반환 한 순서대로 문자를 포함하는 문자열을 반환해야합니다 charAt().

IDE는 아마도 재정의 해야한다는 것을 상기 시켜서 도움을주지 않습니다 toString(). 예를 들어, IntelliJ에, 이것은 당신이 새로운 만들 경우 당신이 볼 것입니다 CharSequence: 구현 http://puu.sh/2w1RJ를 . 의 부재에 유의하십시오 toString().

당신에 의존하는 경우 toString()임의에 CharSequence, 그것은 해야 제공된 작업 CharSequence구현이 제대로 자신의 일을했다. 그러나 불확실성을 완전히 피하려면 a StringBuilder및을 사용해야합니다 append().

final StringBuilder sb = new StringBuilder(charSequence.length());
sb.append(charSequence);
return sb.toString();

9
다른 사람이 실수했을 수 있으므로 실수를하거나 코드를 악화시키지 않아야합니다.
Lodewijk

9
새로운 StringBuilder (charSequence)를 반환합니다. toString (); 단일 라이너에 해당합니다.
Gábor Lipták

22
이 답변이 잘못CharSequence 인터페이스를 명시 적으로 정의 toString()더 - 구현이 이 놓친하지 않습니다. 의 javadoc 상태는 "이 순서와 같은 순서이 순서의 문자를 포함하는 문자열을 반환합니다. 문자열의 길이가이 순서의 길이 될 것"에서 처음부터 1.4 . 사람들, 당신이
공감 한

2
이것은 바보입니다. 계약자가 계약을 따를 것을 신뢰하지 않으면 모든 베팅이 해제됩니다. 매개 변수로 전달 StringBuilder하면 예상대로 수행하지 못할 수도 있습니다. 같은과 같은 다른 인터페이스에 간다 List거나 Set, 특히 자신 equals()hashCode()오버라이드 (override)하지 않고 컴파일하지만 방법이 있어야 계약에 따라 오버라이드 (override)합니다.
shmosel

3
인터페이스 가이 작업을 수행한다는 사실은 그와 관련하여 잘못된 결정 일 것입니다. 내 대답은 단순히 이것이 인간의 실수가 발생하기 쉬운보다 쉽다 는 것을 강조 합니다.
fragorl

19

String.valueOf ()를 직접 사용할 수 있습니다

String.valueOf(charSequence)

이것은 실제로 toString을 호출하기 전에 toString()null 검사를 수행하는 것과 같습니다 charSequence.

이것은 메소드가 a charSequence또는 nullvalue를 리턴 할 때 유용 합니다.


8
이것은 실제로 오늘 나를 물었습니다. 경우 charSequence널 (null)이 다음 문자열이 반환됩니다 "null"하지 null.
ChrisThomas

오. 말이된다. 이 답변을 제거하겠습니다
Abhishek Batra

1
나는 이것이 어떤 경우에는 완벽하다고 생각합니다.
Shukant Pal 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.