java - 实现 Java 接口(interface) - Kotlin

标签 java kotlin

刚开始使用 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/

相关文章:

Java:IndexOf(String string)返回错误字符

java - 使用 BouncyCaSTLe 从 DER 文件解析 AttributeCertificate 时遇到未知标签

java - 缺少 java.compiler 系统属性

java - break不能在循环外使用

android-layout - 为什么在使用 Kotlin 中的后退按钮导航到另一个片段并返回后片段中的 EditText 显示相同的值?

android - 我第二次按下录制按钮时,我的应用程序崩溃了

Java 游戏无法在第二台显示器上呈现

android - 如何将获取的数据转换为产品列表?

kotlin - 如何在 Ktor 内部检查 Netty 是否实际启动?

annotations - Kotlin可重复的@annotations在jdk-8上不起作用