как реализовать java-интерфейс SAM в Котлине?

В Java можно написать такой код:

model.getObservableProduct().observe(this, new Observer<ProductEntity>() { @Override public void onChanged(@Nullable ProductEntity productEntity) { model.setProduct(productEntity); } }); 

Однако попытка переопределить локальную функцию в результатах Kotlin: введите описание изображения здесь


Вопрос: возможно ли переопределить локальную функцию в Котлин?

попробуйте вместо этого использовать выражение объекта.

 // the parentheses must be removed if Observer is an interface ---V model.getObservableProduct().observe(this, object:Observer<ProductEntity>(){ override fun onChanged(productEntity:ProductEntity?) { model.setProduct(productEntity); } }); 

ЕСЛИ « Observer является интерфейсом Java SAM (интерфейс kotlin SAM не поддерживается сейчас ), тогда вы можете использовать выражение лямбда вместо этого:

 model.getObservableProduct().observe(this, Observer<ProductEntity>{ model.setProduct(it); }); 

ИЛИ используя вместо этого лямбда-выражение, например:

 // specify the lambda parameter type ---v model.getObservableProduct().observe<ProductEntity>(this){ model.setProduct(it); }); 
Intereting Posts
Room и Kotlin – получение «Каждая переменная привязки в запросе должна иметь параметр метода соответствия». Как отладить NoClassDefFoundError (Gradle, Kotlin) Повторное отображение диалогового окна после dismiss Использование условия для выбора свойства сортировки в Котлине Выполнение не выполнено для задачи «app: copyDebugAndroidTestKotlinClasses» – Android Kotlin Build Error Лучший способ использования BufferedReader в Котлине Недвижимость без геттера в Котлине Corda: error = org.hibernate.InstantiationException: конструктор по умолчанию для объекта Что такое тест (0) в этом фрагменте от kotlinlang.org? Как заставить какой-то метод быть видимым только для kotlin Запуск тестов kotlin с помощью gradlew вызывает java.lang.SecurityException Ошибка при переходе с Java на Kotlin. Ошибка – org.gradle.api.tasks.TaskExecutionException: выполнение не выполнено для задачи: app: compileDebugKotlin ' Как я могу квадратировать каждый элемент целочисленного массива в Kotlin В чем причина twitter4j.StreamListner IllegalAccessError в Котлине? Создать метод с общим параметром для повторных действий