Это должно быть просто, но я не смог найти простого ответа в одну строку. Как мне изменить CharSequence[]
на String[]
. Моя цель — изменить CharSequnce[] = {"a","b","c"}
на List<String>
, но когда я пишу Arrays.asList(a)
, студия Android выдает ошибку, говоря, что обязательный тип — List<String>
, а предоставленный — List<CharSequence>
. Кажется, мне нужно сначала изменить массив CharSequence на массив String.
Я также попробовал Arrays.asList(Arrays.toString(e))
, но результат печати списка будет [[a, ,b, c]]
, а это не то, что мне нужно.
Вы понимаете, что String
— это CharSequence
? Класс String
реализует интерфейс CharSequence
.
@Rogue Спасибо за ответ. Это был всего лишь пример. В этом контексте я использую CharSequence (чтобы получить записи из пользовательского счетчика): TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MultiSpinner); CharSequence[] entries = a.getTextArray(R.styleable.MultiSpinner_android_entries);
Перебрать массив, преобразовать каждый элемент в строку, добавить преобразованный элемент в результирующий список. Вы можете использовать Stream API (только один вариант):
CharSequence[] charSeqArr = //get data
List<String> result = Stream.of(charSeqArr)
.map(CharSequence::toString)
.toList();
Спасибо. Единственная проблема заключается в том, что Android Studio требует API >= 34.
Обратите внимание, что
CharSequence[] = {"a", "b", "c"}
присваивает правуюString[]
CharSequence[]
, что вызывает вопрос: почему вы вообще используетеCharSequence
? Конечно, вы могли бы отобразить эти вещи:Arrays.stream(a).map(Object::toString).toList()
, но это, по-видимому, расточительно по сравнению с исправлением сохраненных данных с самого начала.