当前位置: 首页 > 面试题库 >

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

皇甫敏达
2023-03-14
问题内容

我有一个第三方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中的匿