разделить союз в Kotlin, чтобы получить доступ в Java - PullRequest
0 голосов
/ 06 ноября 2018

Я работаю в смешанном проекте Java - Kotlin. Есть класс Либо: https://github.com/android10/Android-CleanArchitecture-Kotlin/blob/master/app/src/main/kotlin/com/fernandocejas/sample/core/functional/Either.kt

В одном из классов Java я получаю экземпляр Either в качестве параметра таким образом:

    AuthenticateUseCase.Params params = new AuthenticateUseCase.Params(username, password);
    authenticateUseCase.invoke(params, new Function1<Either<? extends Failure, ? extends TokenInfo>, Unit>() {
        @Override public Unit invoke(
            Either<? extends Failure, ? extends TokenInfo> either) {
                // TODO here goes some code
        }
    });

Мой вопрос заключается в том, как в помеченном месте // TODO получить в Java экземпляр TokenInfo и вызвать для него методы (при условии, что это объект TokenInfo (а не Failure), встроенный в параметр Either).

Заранее спасибо за помощь

1 Ответ

0 голосов
/ 06 ноября 2018

Я ... действительно не использовал бы этот класс ни для чего. Это может быть только для определенной цели (указано sample в имени пакета). Но either действительно нужен параметр типа, а методы left и right не имеют смысла.

Если у вас почему-то нет выбора, вы можете позвонить either следующим образом:

@Override public Unit invoke(
    Either<? extends Failure, ? extends TokenInfo> either) {
        either.either(f -> ..., tokenInfo -> ...);
        return Unit.INSTANCE;
}

, где f -> ... и tokenInfo -> ... - лямбды на Яве, принимающие Failure и TokenInfo соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...