3

坚持使用旧的 java 版本,所以我无法将我的数组列表转换为字符串,并且想知道如何成功地将我的 arrayList 转换为数组。这是我的代码:

    String racesArray[] = request.getParameterValues("races");
    ArrayList races = new ArrayList();

    for (int i = 0; i < racesArray.length; ++i) {
        String s = racesArray[i];
        if (s != null && s.length() > 0) {
            races.add(s);
        }
    }
    final String[] racesArray1 = (String[])races.toArray(new Object[races.size()]);

上面的代码给了我一个 classCastException

编辑:更改以避免混淆变量

4

3 回答 3

4

问题出在第一行

您的String array不包含Strings.

String[] racesArray = {raceWhite, raceBlack, raceInd, raceAsian, raceHaw, raceInter, raceUnknown}

将其声明为“字符串”

String[] racesArray = {"raceWhite", "raceBlack", "raceInd", "raceAsian", "raceHaw"};

问题2:

您需要创建一个new String[]而不是new Object[]

final String[] racesArray1 = (String[])races.toArray(new String[races.size()]);

请记住,String 是一个 Object对象 doss 不从 String 扩展


于 2013-09-13T18:37:14.480 回答
4

试试这个:

String[] racesArray = { "raceWhite", "raceBlack", "raceInd", "raceAsian", "raceHaw", "raceInter", "raceUnknown" };
List races = Arrays.asList(racesArray);
String[] racesArray1 = (String[]) races.toArray(new String[races.size()]);

注意最后一行:new String not new Object——这是你的问题的主要原因。

祝 Java 1.4.2 好运 :) 我推荐 Joshua Bloch “Effective Java” 第一版的书。它适用于 Java 1.4,涉及日常编程中最重要的方面。

于 2013-09-13T18:39:00.340 回答
1

你可以这样:

int countNull = 0;
for(String s : racesArray)
    if(s == null)
        countNull++;

int i = 0;
String arr = new String[racesArray.length-countNull];
for(String s : racesArray) {
    if(s != null) {
        arr[i++] = s;
    }
}
于 2013-09-13T18:36:14.077 回答