实现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() })