Как исправить Kotlin вывод ошибки компилятора типа () -> Единица, но Потребитель ? ожидалось - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть следующий Java метод

 public Disposable getSuperWifiStatus(SuperWifiProvider provider, Consumer<CPE_SuperWifiStatus>   onNext, Consumer<Throwable> onError) {
    return null;
 }

Я называю этот метод java из файла класса Kotlin следующим образом:

 communicationManager.getSuperWifiStatus(
                SuperWifiProvider.AIRTIES,
                { emitter.onNext(status)},
                { emitter.onError(it)}

Компилируется и работает.

Если я преобразовываю метод java в Kotlin функцию:

  fun getSuperWifiStatus(provider: SuperWifiProvider?, onNext: Consumer<CPE_SuperWifiStatus?>?,   onError: Consumer<Throwable?>?): Disposable? {
    return null
  }

Я получаю следующие ошибки компилятора:

 1. unresolved reference it 
 2. type mismatch inferred type is () -> Unit
    but Consumer<Throwable?>? was expected

Я не понимаю не знаю, как их решить

1 Ответ

1 голос
/ 21 апреля 2020

Вы можете явно указать тип лямбды, выполнив:

Consumer<Throwable?> { emitter.onError(it) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...