如何在 Kotlin 中像 JAVA 一样初始化抽象 Class 对象

How To Init Abstract Class Object in Kotlin Like JAVA

我是 kotlin 新手,刚从 android/java 转到 android/kotlin。 Kotlin 确实是一种简单的语言,但在某些地方它的支持不够或它的建议不起作用。 我正在编写一个代码,我将在其中调用具有参数构造函数的通用抽象 class。通用 class 写在 Java 中,我可以从 java class 初始化 class 没有任何错误,但是当我从 class 初始化通用时kotlin 它给出类型不匹配错误。

首先让我向您展示我的 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) {

        }
    }

现在让我向您展示我的错误代码

 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) {}
}

String和String有错误?我用的是字符串?但是当我分配时我使用的是没有空检查的字符串