Ошибка вывода типа в Kotlin с использованием PairList - PullRequest
0 голосов
/ 31 января 2019
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;
}

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Вы используете android.util.Pair в PairList.java и создали Pair(carObj, peopleObj), используя kotlin.Pair;

Так что замените android.util.Pair; на import kotlin.Pair; в PairList.java все будет работать.

0 голосов
/ 31 января 2019

Ваш класс PairList, вероятно, расширяет класс Pair с android.util.Pair;, и когда вы используете его в своем файле kotlin, он использует kotlin.Pair.В связи с этим вы получаете вывод типа не удалось.Чтобы преодолеть это, у вас есть два решения

  1. , просто включите ваш java-файл в kotlin
  2. , используйте класс Pair в kotlin, используя import android.util.Pair.
    val pair = android.util.Пара (carObj, peopleObj)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...