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

如何在Kotlin中创建抽象类的匿名类的实例?

闽经纬
2023-03-14
问题内容

假设这KeyAdapter是一个抽象类,具有多个可以重写的方法。

在Java中,我可以执行以下操作:

KeyListener keyListener = new KeyAdapter() {
    @Override public void keyPressed(KeyEvent keyEvent) {
        // ...
    }
};

如何在Kotlin中做同样的事情?


问题答案:

从Kotlin官方语言文档中:

window.addMouseListener(object : MouseAdapter() { 
    override fun mouseClicked(e : MouseEvent) { 
    // ... 
}

适用于您手头的问题:

val keyListener = object : KeyAdapter() { 
    override fun keyPressed(keyEvent : KeyEvent) { 
    // ... 
}

正如Peter Lamberg指出的那样-如果匿名类实际上是功能接口的实现( 即不是抽象类的实现 ),则可以使用SAM
Conversions
进一步简化该语句:

val keyListener = KeyAdapter { keyEvent ->
    // ...
}

还请注意有关Java和Kotlin中定义的接口的不同用法的讨论。



 类似资料:
  • 本文向大家介绍Kotlin 创建接口或者抽象类的匿名对象实例,包括了Kotlin 创建接口或者抽象类的匿名对象实例的使用技巧和注意事项,需要的朋友参考一下 一 ,定义接口和抽象类 二,创建对应的匿名对象 补充知识:android Kotlin 继承、派生、接口、构造方式,方法、属性重写 前言 kotlin 作为google官方android 开发语言,大势所趋,据传到2018底kotlin要全面替

  • 我通过学校为一项任务提供的简报创建了一个飞机座位预订系统。我遇到了一个我无法解决的主要问题。 摘要说明抽象类必须有一个抽象方法和大约4个公共方法。在抽象类的两个子类中,我们都必须初始化对象数组(所有普通的座位)。然而,一旦它们被初始化,我不知道如何将它们发送回抽象类(该类有一个检查未预订的飞机座位的方法,这就是我需要初始化的座位对象的地方) ArrayIndexOutOfBounds在一个应该在边

  • 本文向大家介绍Kotlin 匿名类实现接口和抽象类的区别详解,包括了Kotlin 匿名类实现接口和抽象类的区别详解的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,还是上代码吧 接口: 抽象类: 看到区别了吗?哈哈,看不到没关系,我告诉你。 他们之间唯一的区别就是调用时的下面这句,抽象类多了一个括号。 object : OnBind object : AbstractOnBind() 就

  • 问题内容: 我有一个第三方Java库,该对象的接口如下: 我如何像Java匿名类一样在Kotlin中简洁地实现它: 问题答案: 假设接口只有一种方法,则可以使用SAM 如果您有一个接受处理程序的方法,那么您甚至可以忽略类型参数: 如果接口具有多个方法,则语法会更加冗长:

  • 问题内容: 在以下代码中,我创建了一个基本抽象类。我希望所有继承自其的类都提供该属性,因此我将该属性设置为。 然后,我创建了一个名为的子类,该子类旨在提供一些功能,但仍保持抽象。中没有属性,但是python实例化了该类的对象而没有错误。一个人如何创建抽象属性? 问题答案: 从Python 3.3 开始,修复了一个错误,这意味着装饰器现在应用于抽象方法时,可以正确地标识为抽象。 注:订单的问题,你必