如何在 Kotlin 中定义实现接口的变量?

How to define a variable which implement the interface in Kotlin?

我希望定义一个实现接口MediaRecorder.OnInfoListener的变量mAction

但是代码 A 不正确,我该如何解决?

代码A

  val mAction: MediaRecorder.OnInfoListener{
        mr, what, extra ->
           if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) {
               //ToDo
          }
    }

新增内容:

代码B

val mAction = object: MediaRecorder.OnInfoListener{
         override fun onInfo(mr: MediaRecorder?, what: Int, extra: Int) {
              if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) {
                       
              }
          }
      }
  val mAction = MediaRecorder.OnInfoListener{
        mr, what, extra ->
           if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) {
               //ToDo
          }
    }

你可以通过这样做来实现这个

您只是缺少 = 而不是 :

val mAction = MediaRecorder.OnInfoListener{
        mr, what, extra ->
           if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) {
               //ToDo
          }
    }

您不能在没有 = 的情况下定义 属性,除非您正在定义自定义 getter 或使用 属性 委托。