类型不匹配。必需:FirebaseRecyclerAdapter<ChatObject, ChatVoiceViewHolders>?成立:
Posted
技术标签:
【中文标题】类型不匹配。必需:FirebaseRecyclerAdapter<ChatObject, ChatVoiceViewHolders>?成立:【英文标题】:Type mismatch. Required: FirebaseRecyclerAdapter<ChatObject, ChatVoiceViewHolders>? Found: 【发布时间】:2021-04-16 05:38:52 【问题描述】:我正在将 Java 代码移植到 Kotlin,但它会引发 Type Miss 匹配错误。
Java 代码:
private FirebaseRecyclerAdapter<ChatObject, ChatVoiceViewHolders> firebaseRecyclerAdapterChats;
firebaseRecyclerAdapterChats = new FirebaseRecyclerAdapter<ChatObject, ChatVoiceViewHolders>(
ChatObject.class,
R.layout.item_messages_video_call,
ChatVoiceViewHolders.class,
dbMessagingMy
)
Kotlin 代码:
private var firebaseRecyclerAdapterChats: FirebaseRecyclerAdapter<ChatObject, ChatVoiceViewHolders>? = null
firebaseRecyclerAdapterChats = object : FirebaseRecyclerAdapter<ChatObject?, ChatVoiceViewHolders?>(
ChatObject::class.java,
R.layout.item_messages_video_call,
ChatVoiceViewHolders::class.java,
dbMessagingMy
)
但我的 Koltin 代码抛出错误:
Type mismatch.
Required:
FirebaseRecyclerAdapter<ChatObject, ChatVoiceViewHolders>?
Found:
以下函数都不能使用提供的参数调用。
(Class
(Class
还有一点,在我的 Java 代码中,我正在使用 AppcompatActivity,而在我的 Kotlin 代码中,我正在使用 BaseActivity..
我做错了什么吗? 我该如何解决?
谢谢。
【问题讨论】:
【参考方案1】:您已将变量声明为FirebaseRecyclerAdapter<ChatObject, ChatVoiceViewHolders>
,但随后您尝试为其设置值FirebaseRecyclerAdapter<ChatObject?, ChatVoiceViewHolders?>
。
所以改变
object : FirebaseRecyclerAdapter<ChatObject?, ChatVoiceViewHolders?>
到这里
object : FirebaseRecyclerAdapter<ChatObject, ChatVoiceViewHolders>
这给你一个错误的原因是因为 Kotlin 对可空性规则更加严格。 Java 并不太关心它。您是说我声明了一个只能具有非空值的变量,但之后您尝试为其分配一个可以具有空值的值。
【讨论】:
以上是关于类型不匹配。必需:FirebaseRecyclerAdapter<ChatObject, ChatVoiceViewHolders>?成立:的主要内容,如果未能解决你的问题,请参考以下文章
类型不匹配。必需:FirebaseRecyclerAdapter<ChatObject, ChatVoiceViewHolders>?成立: