java - 如何避免 Kotlin 中的过载冲突?
问题描述
假设我有这些接口
interface BaseDatabase
interface UpdatingDB {
fun getSessionStat(): UpdaterSessionStat
}
interface InsertingDB {
fun getSessionStat(): InserterSessionStat
}
我想要一个类来实现所有这些
class MyDB: BaseDatabase, UpdatingDB, InsertingDB {
override fun getSessionStat(): UpdaterSessionStat {
TODO("Not yet implemented")
}
override fun getSessionStat(): InserterSessionStat {
TODO("Not yet implemented")
}
}
但它会导致重载错误。这里有哪些可能的修复\解决方法可以让一个类实现所有这些接口?除了修改接口本身。
解决方案
一个类中不能有两个具有相同名称和相同参数的方法。作为一种解决方法,您可以使用带有接口类型参数的构造函数:
class MyDB(val updatingDB: UpdatingDB, val insertingDB: InsertingDB): BaseDatabase {
fun getSessionStat1(): UpdaterSessionStat {
return updatingDB.getSessionStat()
}
fun getSessionStat2(): InserterSessionStat {
return insertingDB.getSessionStat()
}
}
在不同的类中实现这些接口:
class UpdatingDBImpl : UpdatingDB {
override fun getSessionStat(): UpdaterSessionStat {
// ...
}
}
class InsertingDBImpl : InsertingDB {
override fun getSessionStat(): InserterSessionStat {
// ...
}
}
推荐阅读
- python - 在 python 中为组合创建一个简单的数据加载器
- javascript - How to access HTML DOM Property using iMacros - xPath
- c# - 显示名称插入 ID
- android - Android 应用程序中的启动画面:图像未加载
- windows - 如何在版本 9 上运行多个具有不同 IP 的 Tor 浏览器?
- python - 在 x_range 上具有偏移的链接平移
- python - 为什么我需要使用现有数据库在 Flask + SQLAlchemy 应用程序中定义模型?
- android - GPIO02 和 GPIO05 不适用于 i.MX7D android 的东西
- html - Bootstrap justify-content-end 未按预期工作
- java - 如何在不创建图形的情况下创建自定义顶点。?