【问题标题】:Kotlin: How to instantiate a class and implement an interface in a single line of code?Kotlin:如何在一行代码中实例化一个类并实现一个接口?
【发布时间】:2022-01-17 23:42:18
【问题描述】:

我正在尝试做类似的事情:

val telephonyCallback = object: TelephonyCallback() implements TelephonyCallback.ServiceStateListener {
    override fun onServiceStateChanged(serviceState: ServiceState) {
        
        }
    }

Kotlin 可以吗?

【问题讨论】:

    标签: android class kotlin interface


    【解决方案1】:

    您可以提供多个以逗号分隔的超类型:

    val telephonyCallback = object: TelephonyCallback(), TelephonyCallback.ServiceStateListener {}
    

    请注意,它不像您预期​​的那样工作。对象表达式创建匿名类,这意味着没有扩展/实现这两个超类型的显式类。在某些情况下,您可以将telephonyCallback 用作两个超类型(例如,如果它是局部变量),在其他情况下,您只能保留其超类型之一,并且您必须明确选择它(属性、函数参数)。

    如果您希望能够在任何地方传递这样的telephonyCallback 变量,您必须为其创建一个常规类,以便在代码中引用它。

    【讨论】:

    • 好的,谢谢你的帮助,Broot
    猜你喜欢
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 2020-07-08
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    相关资源
    最近更新 更多