lateinit var dataList: PairList<Car, People>
我想基于对检索特定位置,所以我要做的是:
val pair = Pair(carObj, peopleObj)
val position = dataList.indexOf(pair as Pair<Car, People>)
但是它给我一个类型推断错误,并要求我显式显示类型。我想我已经用as Pair<Car, People>
完成了,但是它说这是多余的声明。关于我完全出错的地方有什么想法吗? :)
PairList类:
public class PairList<F, S> extends ArrayList<Pair<F, S>> {
public boolean add(F first, S second) {
return add(new Pair<>(first, second));
}
public void add(int index, F first, S second) {
add(index, new Pair<>(first, second));
}
@Override
public int indexOf(Object o) {
if (o instanceof Pair) {
return super.indexOf(o);
} else {
for (int i = 0; i < size(); i++) {
Pair<F, S> pair = get(i);
if (pair != null) {
if (pair.first.equals(o)) return i;
} else {
if (o == null) return i;
}
}
for (int i = 0; i < size(); i++) {
Pair<F, S> pair = get(i);
if (pair != null) {
if (pair.second.equals(o)) return i;
} else {
if (o == null) return i;
}
}
}
return -1;
}
public int indexOf(F first, S second) {
for (int i = 0; i < size(); i++) {
Pair<F, S> pair = get(i);
if (pair != null) {
if (pair.first.equals(first) && pair.second.equals(second)) {
return i;
}
} else {
if(first == null && second == null) {
return i;
}
}
}
return -1;
}
答案 0 :(得分:1)
您的PairList类可能正在扩展android.util.Pair;
中的Pair类,并且当您在kotlin文件中使用它时,它正在使用kotlin.Pair
。原因是您无法进行类型推断。
为了克服这个问题,您有两种解决方案
android.util.Pair
在kotlin中使用Pair类。答案 1 :(得分:1)
您在android.util.Pair
中使用PairList.java
,并使用Pair(carObj, peopleObj)
创建了kotlin.Pair;
因此,android.util.Pair;
中的import kotlin.Pair;
替换为PairList.java
,一切正常。