我一直认为CharSequence []和String []是必不可少的,但是:

我有一些具有以下内容的代码:

CharSequence[] mEntries;
...
String[] mEntriesString = (String[]) mEntries;
ListAdapter adapter = new ArrayAdapter<String>(getContext(), R.layout.two_lines_list_preference_row, mEntriesString)


当代码运行时,我得到

java.lang.ClassCastException: java.lang.CharSequence[] cannot be cast to java.lang.String[]


有两个问题?


为什么这种转换不会发生
为什么ArrayAdapter不允许在其构造函数中使用CharSequence []。

最佳答案

CharSequenceStringStringBufferStringBuilder类实现的接口。因此CharSequence可以容纳此实现类的任何Object,而CharSequence#toString返回String,请尝试-

String[] mEntriesString = new String[mEntries.length];
int i=0;
for(CharSequence ch: mEntries){
    mEntriesString[i++] = ch.toString();
}

关于java - 转换CharSequence []和CharSequence [],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14983577/

10-11 14:45