java.lang.ClassCastException: [Ljava.lang.String; 不能转换为 java.util.List

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/11098740/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 03:46:58  来源:igfitidea点击:

java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.util.List

javagenericsarraylistclasscastexception

提问by Family

I have a List, which I am trying to use in 2 different ways...

我有一个List,我试图以两种不同的方式使用它......

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);

And my list is populated like this...

我的列表是这样填充的......

mListSelectedsSDAY = 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).isAllSpeci??alDays()) { 
            for (int t = 0; t < mListSDayType.size(); t++) { 
                tmp1.add(mListSDayType.get(t).getSpecialDayName()); 
            } 
        }
        tmp2.add(tmp1); 
    }

    mListSelectedsSDAY.add(tmp2); 
}

However my code it always giving the following error...

但是我的代码总是出现以下错误...

java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.util.List

Could someone please help me understand why this is happening.

有人可以帮助我理解为什么会发生这种情况。

回答by Ahmad

One possible situation may be is that, in your series of Get methods(), you are moving ahead to get Strings and assigning it to List variables.

一种可能的情况是,在您的一系列 Get methods() 中,您正在继续获取字符串并将其分配给 List 变量。

回答by Bohemian

You actually have a List<List<String>>, not a List<List<List<String>>>.

你实际上有一个List<List<String>>,而不是一个List<List<List<String>>>

You must be using a raw Listtype somewhere for this to happen

您必须在List某处使用原始类型才能发生这种情况