如何在 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有错误?我用的是字符串?但是当我分配时我使用的是没有空检查的字符串
我是 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有错误?我用的是字符串?但是当我分配时我使用的是没有空检查的字符串