【问题标题】: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 变量,您必须为其创建一个常规类,以便在代码中引用它。