实现 Java 接口 - Kotlin



刚开始使用 Kotlin,并且我已经阅读了官方文档,我在从 Kotlin 库中实现接口时遇到了问题。

这是java中的接口:

public interface ResultCallBack {
void detailsRetrieved(Obj var1, AnotherInterface var2);
void anotherDataRetrieved(int var1, AnotherInterface var2);
}

我从 kotlin 调用的方法如下:

public static void startLibActivity(Context context, ResultCallBack callback) {
sLuhnCallback = callback;
context.startActivity(new Intent(context, Library.class));
}

如何从 Kotlin 调用startLibActivity并实现ResultCallBack

我想我被这个试验困住了:

Library.startLibActivity(activity, {})

我已经在{}中尝试了许多可能性,但在正确的实现方面仍然存在问题。

由于您的 Java 接口不是 SAM 函数接口,因此您不能直接在 Kotlin 中使用 lambda 表达式{}

您可以在 Kotlin 中实现 Java 接口,例如:

class KotlinResultCallBack : ResultCallBack {
override fun detailsRetrieved(var1: Obj?, var2: AnotherInterface?) = TODO()
override fun anotherDataRetrieved(var1: Int, var2: AnotherInterface?) = TODO()
}

然后你可以调用startLibActivity方法,如下所示:

startLibActivity(context, KotlinResultCallBack())

您还可以使用对象表达式来创建实现 Java 接口的匿名类实例,例如:

startLibActivity(context, object : ResultCallBack {
override fun detailsRetrieved(var1: Obj?, var2: AnotherInterface?) = TODO()
override fun anotherDataRetrieved(var1: Int, var2: AnotherInterface?) = TODO()
})

最新更新