【问题标题】:java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.util.List [duplicate]java.lang.ClassCastException: [Ljava.lang.String;无法转换为 java.util.List [重复]
【发布时间】:2012-06-19 10:03:40
【问题描述】:

我有一个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);

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

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

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

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

谁能帮我理解为什么会这样。

【问题讨论】:

  • 我的盒子没有出现任何错误。请确保您以正确的方式声明 private List&lt;List&lt;List&lt;String&gt;&gt;&gt; mListSelectedsWeekDAY;。您能否展示更多您的代码,特别是关于您如何填充mListSelectedsWeekDAY?正如 Thilo 所说,编译器应该对你大喊大叫。
  • 你有一个String[]。反对类型注解。你是怎么把它列入清单的?某处应该有编译器警告。
  • 向问题添加更多代码。我相信错误是在其他行提出的,而不是您的想法。

标签: java generics arraylist classcastexception


【解决方案1】:

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

【讨论】:

  • 我声明:mListSelectedsSDAY = new ArrayList>>(); for (int i = 0; i > tmp2 = new ArrayList>(); for (int j = 0; j tmp1 = new ArrayList(); if (mListTimeBand.get(i).getTimeBandDefList().getTimeBandDefini().get(j).isAllSpecialDays()) { for (int t = 0; t
【解决方案2】:

您实际上有一个List&lt;List&lt;String&gt;&gt;,而不是List&lt;List&lt;List&lt;String&gt;&gt;&gt;

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

【讨论】:

  • 按照您的建议: List mListSelectedsSDAY = new ArrayList>>(); ??? :)
猜你喜欢
  • 1970-01-01
  • 2014-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多