Ответ 1
textView.setText(String.valueOf(c))
Какой самый эффективный способ передать один char методу, ожидающему CharSequence?
Это то, что у меня есть:
textView.setText(new String(new char[] {c} ));
В соответствии с ответами, приведенными здесь, это разумный способ сделать это, когда ввод представляет собой массив символов. Мне было интересно, есть ли скрытый ярлык, который я мог бы применить в одном случае char.
textView.setText(String.valueOf(c))
Анализ реализации метода Character.toString(char c)
показывает, что они используют почти тот же код, который вы используете:
public String toString() {
char buf[] = {value};
return String.valueOf(buf);
}
Для удобства чтения вы должны просто использовать Character.toString( c )
.
Другим эффективным способом, вероятно, будет
new StringBuilder(1).append(c);
Определенно более эффективно использовать оператор +
, поскольку, согласно javadoc:
Язык Java обеспечивает специальную поддержку оператора конкатенации строк (+) и для преобразования других объектов в строки. Конкатенация строк реализуется через класс
StringBuilder
(илиStringBuffer
) и его метод добавления
Сокращение, как в случае наименьших типизированных символов:
c+""; // where c is a char
В полном объеме:
textView.setText(c+"");
Самый компактный CharSequence, который вы можете получить, когда у вас есть несколько символов, является CharBuffer. Чтобы инициализировать это с помощью значения char:
CharBuffer.wrap(new char[]{c});
Говоря об этом, использование Strings является более удобным и удобным для работы.
Решение без конкатенации таково:
Character.valueOf(c).toString();
char c = 'y';
textView.setText(""+c);