当使用 Child Class 寻址时,Kotlin 中针对在 Base Class 中定义的接口的未解析引用

Unresolved Reference in Kotlin for an Interface defined in Base Class when addressed using Child Class

您好,我正在尝试使用继承 AudioBase.java 的 AudioChild.java 来解决在我的 AudioBase.java 中定义的接口“CallbackTest”。但是在尝试这样做时它给出了 Unresolved reference 的编译错误。

这是我的 class 定义:

AudioBase.java

package com.testapp.kotlinexample.classes;

public class AudioBase {

    public interface CallbackTest {
        void onCall(int var1);
    }

}

Child Class AudioChild.java

package com.testapp.kotlinexample.classes;

import android.util.Log;

public class AudioChild extends AudioBase{

    private static final String TAG = "AudioChild";

    public void someOtherMethod() {
        Log.i(TAG, "in someOtherMethod()");
    }

}

MainActivity.kt

import android.content.Context
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.testapp.kotlinexample.classes.AudioChild


class MainActivity : AppCompatActivity() {

    private val TAG = "TestApp"
    private var mContext: Context? = null
    private val stateCallback =
        AudioChild.CallbackTest { // Compilation error on this line
            Log.i(TAG, "onCall:() called")
        }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        mContext = applicationContext
    }
}

当我使用 AudioChild.CallbackTest 时出现以下编译错误:

未解决的参考:CallbackTest

谁能帮我理解为什么会出现这个错误?

我不是科特林专家,但我知道 java 并用谷歌搜索了一下:

静态方法(看起来 class/interface 定义)不被继承。

基本上只有实例(non-static)成员被继承。静态引用的所有内容 (class-based) 都必须使用它们在其中定义的 class 前缀。

在这种情况下:

private val stateCallback =
    AudioBase.CallbackTest { 
        Log.i(TAG, "onCall:() called")