错误消息:“ SchedulableInserter”的类型参数E的值不一致:事件,赋值
所以基本上我有一个抽象类Schedulable。 我也有两个类的事件(单个事件,如时间戳) 和一个类Assignment(基本上是一个事件,但也有一个持续时间) 我有一个MainActivity,我想在其中将实例插入SQLiteDB。 我想为Schedulable的每个子类都有一个不同的插入方法 轻松处理它们之间的差异。
// SchedulableInserter.kt
interface SchedulableInserter<E> where E : Schedulable{
fun onInsertSchedulable(item:E)
}
// MainActivity.kt
class MainActivity() : AppCompatActivity(),
NavigationView.OnNavigationItemSelectedListener,
SchedulableInserter<Incident>, SchedulableInserter<Assignment> {
/* ^ ^
| |
Sadly Kotlin says:
Type parameter E of 'SchedulableInserter' has inconsistent values:
Incident, Assignment
A Supertype apperars twice
*/
}
我的意思是,如果我将SchedulerInserter绑定到Schedulable,我可以在方法中进行区分,但是我希望不必这样做。
答案 0 :(得分:1)
我建议在活动中使用插入器作为属性,而不是已实现的接口:
class MainActivity() : AppCompatActivity(),
NavigationView.OnNavigationItemSelectedListener {
val incidentInserter = SchedulableInserter<Incident> { ... }
val assignmentInserter = SchedulableInserter<Assignment> { ... }
}
要使that syntax可用,currently需要使用Java而不是Kotlin定义SchedulableInserter
;否则你必须写
val incidentInserter = object : SchedulableInserter<Incident> {
override fun ...
}
答案 1 :(得分:0)
本·本回答。
解决方案:
我的意思是,如果我绑定,我可以在方法中区分 SchedulerInserter到Schedulable,但我希望不必这样做 做到这一点。