簡體   English   中英

如何像 JAVA 一樣在 Kotlin 中初始化抽象類對象

[英]How To Init Abstract Class Object in Kotlin Like JAVA

我是 kotlin 新手,剛從 android/java 轉到 android/kotlin。 Kotlin 確實是一種簡單的語言,但在某些地方它的支持不夠或它的建議不起作用。 我正在編寫一個代碼,我將在其中調用具有參數構造函數的通用抽象類。 泛型類是用 Java 編寫的,我可以從 java 類中初始化該類而不會出現任何錯誤,但是當我從 kotlin 中初始化泛型類時,它會出現類型不匹配錯誤。

1st 讓我向你展示我的 java 代碼,沒有錯誤

GenericAdapter<String, NotificationFragmentBinding> transmissionAdapter;
   transmissionAdapter = new GenericAdapter<String, NotificationFragmentBinding>(getContext(),carsList) {
        @Override
        public int getLayoutResId() {
            return 0;
        }

        @Override
        public void onBindData(String model, int position, NotificationFragmentBinding dataBinding) {

        }

        @Override
        public void onItemClick(String model, int position) {

        }
    }

現在讓我向你展示我的 kotlin 代碼有錯誤

 var notificationGenericAdapter: GenericAdapter<String, NotificationFragmentBinding>? = null
notificationGenericAdapter = object : GenericAdapter<String?, NotificationFragmentBinding?>(this, list) {
        override fun getLayoutResId(): Int {
            return 0
        }

        override fun onBindData(model: String?, position: Int, dataBinding: NotificationFragmentBinding?) {}
        override fun onItemClick(model: String?, position: Int) {}
    }

Kotlin 代碼給了我類型不匹配錯誤。

感謝@Stanislav Bondar

那是一個愚蠢的錯誤

正確的版本在這里

notificationGenericAdapter = object : GenericAdapter<String, NotificationFragmentBinding>(this, list) {
    override fun getLayoutResId(): Int {
        return 0
    }

    override fun onBindData(model: String?, position: Int, dataBinding: NotificationFragmentBinding?) {}
    override fun onItemClick(model: String?, position: Int) {}
}

字符串和字符串有錯誤? 我用的是字符串? 但是當我分配時,我使用的是沒有空檢查的字符串

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM