Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
实现Java接口-Kotlin_Java_Kotlin - Fatal编程技术网

实现Java接口-Kotlin

实现Java接口-Kotlin,java,kotlin,Java,Kotlin,刚开始学习Kotlin,我已经阅读了官方文档,我在Kotlin的库中实现接口时遇到了问题 以下是java中的接口: public interface ResultCallBack { void detailsRetrieved(Obj var1, AnotherInterface var2); void anotherDataRetrieved(int var1, AnotherInterface var2); } 我从kotlin调用的方法如下: public stati

刚开始学习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调用
startIBactivity
,并实现
ResultCallBack

我想我被这场审判困住了:

Library.startilibactivity(activity,{})


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

因为您的java接口不是SAM,所以您不能直接在Kotlin中使用lambda表达式
{}

例如,您可以在Kotlin中:

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

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

    override fun anotherDataRetrieved(var1: Int, var2: AnotherInterface?) = TODO()
})
然后您可以按如下方式调用
startIBactivity
方法:

startLibActivity(context, KotlinResultCallBack())
还可以使用创建实现Java接口的匿名类实例,例如:

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

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

    override fun anotherDataRetrieved(var1: Int, var2: AnotherInterface?) = TODO()
})

你尝试了什么?你的Kotlin代码是什么样子的?@Makoto我刚刚更新了问题谢谢。这管用!我将在5分钟内接受答案mins@belvi一点也不。