由于不兼容的类型,接收不同通用列表的方法不起作用

时间:2014-03-01 17:17:29

标签: java android arraylist

我创建了一个方法,以这种方式返回列表中元素的第一个出现的索引

public int getOccurrenceIndex(ArrayList<Object> list, Object o){
        Object tmp;
        for(int i=0; i<list.size(); i++){
            tmp=list.get(i);
            if(tmp.equals(o)){
                return i;
            }
        }
        return -1;
    }

我想在不同的arrayList中使用它,例如

ArrayList<Car> carList, Car c

ArrayList<Person> personList, Person p

没有为每种类型定义单独的方法

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

使该方法具有通用性。另外,不要将ArrayList作为参数,而是使用List,以便它可以与List的任何实现一起使用:

public <T> int getOccurrenceIndex(List<T> list, T o){
    T tmp;
    for(int i=0; i<list.size(); i++){
        tmp = list.get(i);
        if(tmp.equals(o)){
            return i;
        }
    }
    return -1;
}
顺便说一句,你为什么要编写自己的方法,而不是使用ArrayList#indexOf(Object)方法?

答案 1 :(得分:0)

使用java Generics,现在您可以传递任何类,如下所示:

public  <T> int getOccurrenceIndex(ArrayList<T> list, T o){
        T tmp;
        for(int i=0; i<list.size(); i++){
            tmp=list.get(i);
            if(tmp.equals(o)){
                return i;
            }
        }
        return -1;
    }