如何在Kotlin中创建匿名接口实例?

我有一个第三方Java库,该对象的接口如下:

public interface Handler<C> {

void call(C context) throws Exception;

}

我如何像Java匿名类一样在Kotlin中简洁地实现它:

Handler<MyContext> handler = new Handler<MyContext> {

@Override

public void call(MyContext context) throws Exception {

System.out.println("Hello world");

}

}

handler.call(myContext) // Prints "Hello world"

回答:

假设接口只有一种方法,则可以使用SAM

val handler = Handler<String> { println("Hello: $it")}

如果您有一个接受处理程序的方法,那么您甚至可以忽略类型参数:

fun acceptHandler(handler:Handler<String>){}

acceptHandler(Handler { println("Hello: $it")})

acceptHandler({ println("Hello: $it")})

acceptHandler { println("Hello: $it")}

如果接口具有多个方法,则语法会更加冗长:

val handler = object: Handler2<String> {

override fun call(context: String?) { println("Call: $context") }

override fun run(context: String?) { println("Run: $context") }

}

以上是 如何在Kotlin中创建匿名接口实例? 的全部内容, 来源链接: utcz.com/qa/402092.html

回到顶部