Ответы:
Призывая его toString()
метод.
Возвращает строку, содержащую символы в этой последовательности в том же порядке, что и эта последовательность. Длина строки будет длиной этой последовательности.
Здесь есть тонкая проблема, которая немного напоминает.
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();
CharSequence
интерфейс явно определяет toString()
- реализатор не пропустил это. В Javadoc состояние «Возвращает строку , содержащие символы в этой последовательности в том же порядке, что и этой последовательности. Длина строки будет длиной этой последовательности» с момента создания в 1.4 . Люди, пожалуйста, проверьте, что вы upvote
StringBuilder
может не дать ожидаемого результата. То же самое касается любого другого интерфейса, такого как List
или Set
, в частности их equals()
и hashCode()
методы, которые будут компилироваться без переопределений, но должны быть переопределены в соответствии с контрактом.
Вы можете напрямую использовать String.valueOf ()
String.valueOf(charSequence)
Хотя это то же самое, toString()
что и проверка на null charSequence
перед фактическим вызовом toString.
Это полезно, когда метод может возвращать либо значение, charSequence
либо null
значение.
charSequence
ноль, то возвращаемая строка будет "null"
и нет null
.
setText(CharSequence)
не делают то, что вам нужно?