在 var 上实现接口而不扩展 Kotlin 上的类

Cai*_*ino 2 interface kotlin

因此,在 Java 上,我喜欢直接在局部变量上实现接口,例如这样。

private SensorEventListener sensorEventListener = new SensorEventListener() {
    @Override
    public void onSensorChanged(SensorEvent event) {
        //implement here
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        //implement here
    }
};
Run Code Online (Sandbox Code Playgroud)

这样稍后我就可以直接添加该侦听器,并能够在之后删除该侦听器。

我试图在 Kotlin 上实现相同的想法,即拥有一个实现接口的 var,而不必定义一个扩展该接口的新类。

是否可以?语义是什么?

iag*_*een 8

object为您的代码创建一个实现接口,

var sensorEventListener = object : SensorEventListener {
    override fun onSensorChanged(event : SensorEvent) {

    }

    override fun onAccuracyChanged(sensor : Sensor, accuracy : Int) {

    }

}
Run Code Online (Sandbox Code Playgroud)