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