刚开始使用 Kotlin 并且我已经阅读了官方文档,我在使用 kotlin 库实现接口(interface)时遇到了问题。
这是 java 中的接口(interface):
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 接口(interface)不是 SAM Functional Interface ,因此您不能直接在 Kotlin 中使用 lambda 表达式 {}
。
您可以 implement a Java interface在 Kotlin 中,例如:
class KotlinResultCallBack : ResultCallBack {
override fun detailsRetrieved(var1: Obj?, var2: AnotherInterface?) = TODO()
override fun anotherDataRetrieved(var1: Int, var2: AnotherInterface?) = TODO()
}
然后你可以调用startLibActivity
方法如下:
startLibActivity(context, KotlinResultCallBack())
您还可以使用 object expression创建一个实现 Java 接口(interface)的匿名类实例,例如:
startLibActivity(context, object : ResultCallBack {
override fun detailsRetrieved(var1: Obj?, var2: AnotherInterface?) = TODO()
override fun anotherDataRetrieved(var1: Int, var2: AnotherInterface?) = TODO()
})
关于java - 实现 Java 接口(interface) - Kotlin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45016990/