ArrayList.get(i)的不兼容类型错误;

时间:2015-01-30 21:17:19

标签: java incompatibletypeerror

List是一个数组列表,在该列表中,系统会提示用户输入单词,直到他们输入“done”。

    ArrayList<String> List =new ArrayList<String>();

我继续在以下行中收到错误:“不兼容的类型”:

    str = List.get(i);

其中str是一个字符串

public int compareTo(ArrayList List, String words, int size)
{
    S1 drive = new S1 ();
    int result=0;
    int min=1;
    String str;
    while (result<min)
    { for(int i=0; i<size ;i++){
        str = List.get(i);
        result=words.compareTo(str);
        if (result<min)
            min=result;
        }  
    }
    return result;
}

3 个答案:

答案 0 :(得分:4)

您在compareTo方法签名中使用了原始类型。当发生类型擦除时,您get上的List方法(令人困惑地命名)是Object,而不是StringcompareTo期望String班。

接受非原始ArrayList作为参数。

public into compareTo(ArrayList<String> list, String words, int size)

(我已将List更改为list以遵循常见的Java命名约定并避免使用常用的Java接口。)

答案 1 :(得分:1)

您的compareTo方法获取原始ArrayList参数,因此您无法在不进行转换的情况下将该列表的元素分配给字符串。

此外,我不会使用List作为变量名,因为已经有一个广泛使用的名称接口。

public int compareTo(ArrayList<String> list, String words, int size)
{
    S1 drive = new S1 ();
    int result=0;
    int min=1;
    String str;
    while (result<min) { 
        for(int i=0; i<size ;i++) {
            str = list.get(i);
            result=words.compareTo(str);
            if (result<min)
                min=result;
        }  
    }
    return result;
}

答案 2 :(得分:0)

更改您的职能名称:

public int compareTo(ArrayList<String> list, String words, int size)

和你的行:

str = list.get(i);

你之前的方式与List接口集合有关,这不适合调用这样的参数