嗨,我正在嘗試使用繼承 AudioBase.java 的 AudioChild.java 來解決在我的 AudioBase.java 中定義的介面“CallbackTest”。但是在嘗試這樣做時它會給出未決議參考的編譯錯誤。
這是我的類定義:
AudioBase.java
package com.testapp.kotlinexample.classes;
public class AudioBase {
public interface CallbackTest {
void onCall(int var1);
}
}
子類 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
有人可以幫我理解為什么會出現這個錯誤嗎?
uj5u.com熱心網友回復:
我不是 kotlin 方面的專家,但我知道 java 并用谷歌搜索了一下:
Kotlin:如何創建“靜態”可繼承函式?
靜態方法(似乎是類/介面定義)不是繼承的。
基本上只有實體(非靜態)成員被繼承。靜態(基于類)參考的所有內容都必須使用它們定義的類前綴。
在這種情況下:
private val stateCallback =
AudioBase.CallbackTest {
Log.i(TAG, "onCall:() called")
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/429040.html
