Kotlin поддерживает то, что вы пытаетесь сделать. Вы фактически передаете полный объект в качестве параметра, а не просто обратный вызов. Если бы это была одна функция обратного вызова, вы могли бы использовать лямбду, но это больше похоже на «объект обратного вызова».
Для этого мы используем анонимные объекты , а не лямбда-функции / функции. Это верно как для java, так и для kotlin.
Первый обратный вызов будет выглядеть так:
Reservoir.putAsync(Constants.SCIENTISTS_CACHE_KEY, scientists,
object : ReservoirPutCallback {
override fun onSuccess() {
//success
DISK_CACHE_DIRTY = false
}
override fun onFailure(e: Exception) {
Log.e("CAMPOSHA","PUTTING CACHE TO DISK FAILED")
}
}
)
Второй примерно одинаков.