【发布时间】:2019-01-25 05:39:32
【问题描述】:
我有以下课程:
abstract class PresenterActivity<S : ViewState, I : ViewIntent> : AppCompatActivity() {
open fun initViewIntent(): I {
return object : ViewIntent{} // type mismatch on this line
}
}
我收到一个预编译错误说明:
Type mismatch
Required: I
Found: <S, I>
为了修复这个预编译错误,我将 ViewIntent 对象转换为 I:
abstract class PresenterActivity<S : ViewState, I : ViewIntent> : AppCompatActivity() {
open fun initViewIntent(): I {
@Suppress("UNCHECKED_CAST")
return object : ViewIntent{} as I
}
}
但为什么 Kotlin 不能检测到 I 必须从 ViewIntent 派生并智能转换它?
【问题讨论】:
-
I派生自ViewIntent不足以 使其成为有效的演员表。事实上,ViewIntent必须派生自I才能使您所描述的东西起作用。