Возврат метода в Kotlin и Java

Я изучаю Котлин. У меня странная ситуация.

У меня есть метод в java:

@Override
public NavDestination navigate(@NonNull Destination destination,
                               @Nullable Bundle args,
                               @Nullable NavOptions navOptions,
                               @Nullable Extras navigatorExtras) {

    ....
    return navDestination ;
}

и код на Котлине

override fun navigate(destination: Destination, 
                      args: Bundle?, 
                      navOptions: NavOptions?, 
                      navigatorExtras: Extras?) {
       ....
    }

Мой вопрос: почему метод в Котлине ничего не возвращает? Когда мы ищем документы https://developer.android.com/reference/androidx/navigation/Navigator.html#navigate(D,%20android.os.Bundle,%20androidx.navigation.NavOptions,%20androidx.navigation.Navigator.Extras)

Вы можете видеть, что метод что-то возвращает.

Спасибо за ответ.

My question is: Why does the method in Kotlin not return anything потому что в вашем коде kotlin нет return?
Marcin Orlowski 20.03.2019 15:51

Компилируется ли код kotlin? Вы использовали автоматическое преобразование кода? Может быть, это просто ошибка конвертера кода?

Christopher 20.03.2019 15:54

Ваша функция должна быть: override fun navigate(destination: Destination, args: Bundle?, navOptions: NavOptions?, navigatorExtras: Extras?): NavDestination и, конечно же, вам нужен оператор возврата внутри блока функции.

forpas 20.03.2019 15:55

Просто добавьте оператор return внутри метода.

Ryan Godlonton-Shaw 20.03.2019 16:08

Метод работает. Полный код: github.com/STAR-ZERO/navigation-dialog-sample/blob/master/ap‌​p/…

mmaciejow 20.03.2019 16:12
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
5
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В ссылке на документацию вы упоминаете ссылки на релиз 1.0.0 библиотеки. Но вы используете версию 1.0.0-alpha06. Сигнатура метода изменилась с alpha06

public abstract void navigate(@NonNull D destination, @Nullable Bundle args, @Nullable NavOptions navOptions, @Nullable Extras navigatorExtras);

в 1.0.0 стабильный:

public abstract NavDestination navigate(@NonNull D destination, @Nullable Bundle args, @Nullable NavOptions navOptions, @Nullable Extras navigatorExtras);

Если вы измените в своем build.gradle следующие зависимости

implementation "android.arch.navigation:navigation-fragment-ktx:1.0.0"
implementation "android.arch.navigation:navigation-ui-ktx:1.0.0"

вы получите ошибку компилятора из-за отсутствия оператора return.

Другие вопросы по теме