java.lang.ClassCastException:[Ljava.lang.String;无法转换为java.util.List
我有一个java.lang.ClassCastException:[Ljava.lang.String;无法转换为java.util.List,java,generics,arraylist,classcastexception,Java,Generics,Arraylist,Classcastexception,我有一个列表,我试图用两种不同的方式使用它 private List<List<List<String>>> mListSelectedsWeekDAY; // technique 1 for(int t = 0; t < mListSelectedsWeekDAY.get(0).get(0).size();t++){ ... } // technique 2 List<String> tmpList = mListSelecte
列表
,我试图用两种不同的方式使用它
private List<List<List<String>>> mListSelectedsWeekDAY;
// technique 1
for(int t = 0; t < mListSelectedsWeekDAY.get(0).get(0).size();t++){
...
}
// technique 2
List<String> tmpList = mListSelectedsWeekDAY.get(0).get(0);
有人能帮我理解为什么会发生这种情况。一种可能的情况是,在您的Get methods()系列中,您正在向前移动以获取字符串并将其分配给列表变量。您实际上有一个
列表,而不是列表
您必须在某个地方使用原始的列表
类型才能发生这种情况不会在我的框上给我任何错误。请确保您声明的私有列表mListSelectedsWeekDAY;
的方式正确。您能展示更多的代码吗,特别是关于如何填充mListSelectedsWeekDAY
?同样正如Thilo所说,compiler应该对你大喊大叫。你有一个String[]
。针对类型注释。你是如何把它放在列表中的?应该在某个地方有一个编译器警告。添加更多的代码来提问。我相信错误是在其他行中提出的,而不是你所想的。我声明:mListSelectedsSDAY=new ArrayList();for(int i=0;imListSelectedsSDAY = new ArrayList<List<List<String>>>();
for (int i = 0; i < mListTimeBand.size(); i++) {
List<List<String>> tmp2 = new ArrayList<List<String>>();
for (int j = 0; j < mListTimeBand.get(i).getTimeBandDefList().getTimeBandDefini().size(); j++) {
List<String> tmp1 = new ArrayList<String>();
if (mListTimeBand.get(i).getTimeBandDefList().getTimeBandDefini().get(j).isAllSpecialDays()) {
for (int t = 0; t < mListSDayType.size(); t++) {
tmp1.add(mListSDayType.get(t).getSpecialDayName());
}
}
tmp2.add(tmp1);
}
mListSelectedsSDAY.add(tmp2);
}
java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.util.List