实现Java接口-Kotlin
刚开始学习Kotlin,我已经阅读了官方文档,我在Kotlin的库中实现接口时遇到了问题 以下是java中的接口:实现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
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一点也不。