Kotlin 在抽象Dao类中实现findFirst()函数
几天后我就开始接Kotlin了。 Atm我正试图编写一个带有公共函数(copyOrUpdate,delete,…)的抽象Dao类,但我仍然停留在findFirst和findAll上。 我的数据库是Realm 这是我的一把刀:Kotlin 在抽象Dao类中实现findFirst()函数,kotlin,realm,dao,Kotlin,Realm,Dao,几天后我就开始接Kotlin了。 Atm我正试图编写一个带有公共函数(copyOrUpdate,delete,…)的抽象Dao类,但我仍然停留在findFirst和findAll上。 我的数据库是Realm 这是我的一把刀: abstract class Dao<T : RealmModel>() { //Get Realm Instance val db: Realm by lazy { Realm.getDefaultInstance()
abstract class Dao<T : RealmModel>() {
//Get Realm Instance
val db: Realm by lazy {
Realm.getDefaultInstance()
}
//Delete - 1 Object
fun delete(input: T) {
if (db.isInTransaction) {
input.deleteFromRealm()
} else {
db.executeTransaction { realm -> input.deleteFromRealm() }
}
}
}
有什么办法解决这个问题吗?
目前,这个函数在我的UserDao类中
class UserDao() : Dao<User>() {
//where
private fun where(): RealmQuery<User> {
return db.where<User>()
}
// Find First
fun findFirst(): User? {
return where()
.findFirst()
}
}
class UserDao():Dao(){
//在哪里
私人娱乐场所():RealmQuery{
返回db.where()
}
//先找到
fun findFirst():用户{
返回where()
.findFirst()
}
}
将类
传递到构造函数中:
abstract class Dao<T : RealmModel>(private val cls: Class<T>) {
fun findFirst(): T? {
return db.where(cls).findFirst()
}
}
class UserDao() : Dao<User>(User::class.java) { ... }
抽象类Dao(private-val-cls:class){
有趣的findFirst():T{
返回db.where(cls.findFirst())
}
}
类UserDao():Dao(User::class.java){…}
Kotlin允许您在某些情况下避免或隐藏它,但不能使用抽象类。我会选择扩展+内联乐趣
inline fun <reified T : RealmModel> Realm.findFirst(): T? {
return where(T::class.java).findFirst()
}
inline fun Realm.findFirst():T?{
返回where(T::class.java).findFirst()
}
inline fun <reified T : RealmModel> Realm.findFirst(): T? {
return where(T::class.java).findFirst()
}