Kotlin:如何在一行代码中实例化一个class并实现一个接口?

Kotlin: How to instantiate a class and implement an interface in a single line of code?

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

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

Kotlin 可以吗?

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

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

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

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