Как я могу конвертировать Java CharSequence
в String
?
java
string
charsequence
Белги
источник
источник
setText(CharSequence)
не делают то, что вам нужно?Здесь есть тонкая проблема, которая немного напоминает.
toString()
Метод имеет базовую реализацию вObject
.CharSequence
это интерфейс; и хотяtoString()
метод появляется как часть этого интерфейса, во время компиляции нет ничего, что заставило бы вас переопределить его и соблюдать дополнительные ограничения, которыеCharSequence
toString()
javadoc метода накладывает наtoString()
метод; т.е. что он должен возвращать строку, содержащую символы в порядке, возвращаемомcharAt()
.Ваша IDE даже не поможет вам, напомнив, что вы, вероятно, должны переопределить
toString()
. Например, в intellij это то, что вы увидите, если создадите новуюCharSequence
реализацию: http://puu.sh/2w1RJ . Обратите внимание на отсутствиеtoString()
.Если вы полагаетесь на
toString()
произвольноеCharSequence
, оно должно работать, еслиCharSequence
разработчик выполнил свою работу должным образом. Но если вы хотите избежать какой-либо неопределенности в целом, вы должны использовать aStringBuilder
иappend()
, например, так:источник
CharSequence
интерфейс явно определяетtoString()
- реализатор не пропустил это. В Javadoc состояние «Возвращает строку , содержащие символы в этой последовательности в том же порядке, что и этой последовательности. Длина строки будет длиной этой последовательности» с момента создания в 1.4 . Люди, пожалуйста, проверьте, что вы upvoteStringBuilder
может не дать ожидаемого результата. То же самое касается любого другого интерфейса, такого какList
илиSet
, в частности ихequals()
иhashCode()
методы, которые будут компилироваться без переопределений, но должны быть переопределены в соответствии с контрактом.Вы можете напрямую использовать String.valueOf ()
Хотя это то же самое,
toString()
что и проверка на nullcharSequence
перед фактическим вызовом toString.Это полезно, когда метод может возвращать либо значение,
charSequence
либоnull
значение.источник
charSequence
ноль, то возвращаемая строка будет"null"
и нетnull
.