Вызов функции Котлина с параметрами лямбда в Java - PullRequest
0 голосов
/ 29 мая 2019

Как я вызываю функции Kotlin с лямбдами в параметре из класса Java.

Пример

fun getToken(
        tokenUrl: String,
        onSuccess: (String) -> Unit,
        onError: (Error) -> Unit
    ): Provider {
        //Implementation
    }

Ответы [ 3 ]

2 голосов
/ 30 мая 2019

Вы можете сделать это

    value.getToken("url",
    new Function1<String, Unit>() {
        @Override
        public Unit invoke(String s) {
            /* TODO */
        }
    }, new Function1<Throwable, Unit>() {
        @Override
        public Unit invoke(Throwable throwable) {
            /* TODO */
        }
    });
1 голос
/ 30 мая 2019

Вы можете вызывать его с обычными лямбдами Java 8, поскольку Kotlin фактически использует интерфейс с одним методом на бэкенде.

myFoo.getToken(tokenUrl, successString -> { ... }, error -> { ... });
0 голосов
/ 29 мая 2019

Это для того, чтобы позвонить в Kotlin, вопрос был отредактирован так, чтобы сказать «с Java» после того, как я дал свой ответ.Оставив его здесь в любом случае в надежде, что это полезно.

Вы можете назвать это так

fun test() {

    getToken("asdf", { print(it) }, { println(it) })

    getToken("asdf", { print(it) }) { err -> println(err) }

    getToken("asdf", ::println, ::println)

    getToken("asdf", ::println) { println(it) }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...