如何在Kotlin中为变量直接实现接口(无需继承类)?
在Kotlin中实现类似Java匿名内部类的监听器存储
嘿,这个需求在Kotlin里实现起来非常直观,完全能达到你想要的效果——用一个var变量存储接口实现,方便后续添加和移除监听器。
对应Java里的匿名内部类,Kotlin用对象表达式来实现,写法更简洁。直接看代码示例:
private var sensorEventListener: SensorEventListener = object : SensorEventListener { override fun onSensorChanged(event: SensorEvent) { // 在这里编写你的逻辑 } override fun onAccuracyChanged(sensor: Sensor, accuracy: Int) { // 在这里编写你的逻辑 } }
这个写法和你Java里的代码功能完全一致:
- 用
private var声明变量,和Java的private修饰符作用相同,限制访问范围 object : SensorEventListener就是Kotlin实现匿名接口实例的方式,对应Java的new SensorEventListener() {...}- 你可以直接把这个变量传入注册监听器的方法,之后也能通过它调用移除监听器的方法,完全满足你的使用场景
如果后续需要替换监听器实现,因为用的是var,直接给变量重新赋值新的对象表达式实例就可以了。
内容的提问来源于stack exchange,提问作者Caio Faustino
相关产品推荐
相关产品推荐

