我有一个第三方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 创建接口或者抽象类的匿名对象实例,包括了Kotlin 创建接口或者抽象类的匿名对象实例的使用技巧和注意事项,需要的朋友参考一下 一 ,定义接口和抽象类 二,创建对应的匿名对象 补充知识:android Kotlin 继承、派生、接口、构造方式,方法、属性重写 前言 kotlin 作为google官方android 开发语言,大势所趋,据传到2018底kotlin要全面替
问题内容: 假设这是一个抽象类,具有多个可以重写的方法。 在Java中,我可以执行以下操作: 如何在Kotlin中做同样的事情? 问题答案: 从Kotlin官方语言文档中: 适用于您手头的问题: 正如Peter Lamberg指出的那样-如果匿名类实际上是功能接口的实现( 即不是抽象类的实现 ),则可以使用SAM Conversions 进一步简化该语句: 还请注意有关Java和Kotlin中定义
问题内容: 我已经阅读了“ C#匿名实现接口(或抽象类) ”线程以匿名实现接口。但是我想知道使用委托或任何类似方法的.NET 2.0(NO LINQ)是否也可能实现 我从JAVA知道以下可能: (我希望我还记得,是一段时间以前我使用JAVA,但我想它是类似的东西)。每当方法需要接口的实例并且仅被调用一次时,这可能会有所帮助,因此无需为此单一方法创建新的类。 问题答案: .NET 2.0还支持匿名委
问题内容: 我最近开始使用C#,并且我想找到与此等效的方法。我不知道这叫什么,所以我将简单地通过代码向您展示。 使用Java,我能够创建如下接口: 并像下面这样在方法的参数中传递此接口: 编辑 :我的问题是关于类中的方法的,如果使用C#可以执行这样的操作。 我想知道是否有一种方法可以使用C#(在方法中实例化接口)执行类似的操作,以及这实际上是什么。谢谢! 问题答案: 哇…好吧,请允许我概括一下:
假设我有注释类: 如何从它扩展接口?编译器在这方面失败: 游乐场链接:https://www.typescriptlang.org/play/#src=const匿名类=类{} let a: typeof匿名类; 接口I扩展类型的匿名类{
问题内容: 众所周知,使用JavaScript创建匿名对象很容易,就像下面的代码一样: 输出: 可以在PHP中应用相同的技术吗?我们可以在PHP中创建匿名对象吗? 问题答案: 已经有好几年了,但是我认为我需要保持最新信息! 从PHP 7开始,可以创建匿名类,因此您可以执行以下操作: 您可以在手册中详细了解 但是我不知道它的实现与JavaScript有多么相似,因此JavaScript和PHP中的匿