我一直认为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 []。
最佳答案
CharSequence
是String
,StringBuffer
,StringBuilder
类实现的接口。因此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/