错误消息:“ SchedulableInserter”的类型参数E的值不一致:“事件”,“分配”
所以基本上我有一个抽象类Schedulable。另外,我有两个类Incident(发生一次事件,如时间戳)和一个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,我可以在方法中进行区分,但是我不必这样做。
我建议在活动中使用插入器作为属性,而不是已实现的接口:
class MainActivity() : AppCompatActivity(),
NavigationView.OnNavigationItemSelectedListener {
val incidentInserter = SchedulableInserter<Incident> { ... }
val assignmentInserter = SchedulableInserter<Assignment> { ... }
}
为了使该语法可用,您当前需要使用SchedulableInserter
Java而不是Kotlin进行定义。否则你必须写
val incidentInserter = object : SchedulableInserter<Incident> {
override fun ...
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句