java - 如何像 JAVA 一样在 Kotlin 中初始化抽象类对象
问题描述
我是 kotlin 的新手,只是从 android/java 转到 android/kotlin。Kotlin 确实是一门简单的语言,但在某些地方它的支持不够,或者它的建议不起作用。我正在编写一个代码,我将在其中调用一个具有参数构造函数的通用抽象类。泛型类是用 Java 编写的,我可以从 java 类初始化该类而不会出现任何错误,但是当我从 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) {
}
}
现在让我向您展示我的 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) {}
}
字符串和字符串有错误?我用的是字符串?但是当我分配时,我使用的是没有空检查的字符串
推荐阅读
- macos - “显示所有窗口”macos 停靠图标给出错误
- cocoapods - 从 Xcode 项目中删除特定的 pod
- ocaml - 如何在 OCaml 中的两个实现代码之间进行选择
- android - SMSManager 发送的短信数量是多少?
- linux - 使用 bash 脚本删除“.bash_aliases”
- asp.net-core - 使用 Windows 身份验证时 PolicyServerClaimsMiddleware 中的 PolicyServer.Local 错误
- python - 对包含文本框的谷歌表单的响应?
- java - 相机未跟踪时无法创建锚点
- python - 使用python自动登录
- algorithm - 处理图中的负循环