Відповіді:
Посилаючись на його 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 . Люди, будь ласка, перевірте, що Ви підтримуєте
StringBuilderможе так само не виконати те, що ви очікуєте. Те ж саме стосується будь-якого іншого інтерфейсу, наприклад, Listабо Set, зокрема, їх equals()та hashCode()методів, які збиратимуться без змін, але повинні бути скасовані відповідно до договору.
Ви можете безпосередньо використовувати String.valueOf ()
String.valueOf(charSequence)
Хоча це те саме, що toString()він робить нульову перевірку charSequenceраніше, ніж насправді викликати toString.
Це корисно, коли метод може повернути charSequenceабо nullзначення, або значення.
charSequenceнуль, то повернутий рядок буде, "null"а ні null.
setText(CharSequence)не роблять те, що потрібно?