小编Gia*_*esi的帖子

Android Kotlin Extension超级调用

我是Java Android开发人员,我正在接近Kotlin

我已经定义了以下类:

open class Player : RealmObject() {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我定义了以下两个扩展,一个用于通用的RealmObject类,另一个用于特定的Player类:

fun RealmObject.store() {
    Realm.getDefaultInstance().use { realm ->
        realm.beginTransaction()
        realm.copyToRealmOrUpdate(this)
        realm.commitTransaction()
    }
}

fun Player.store(){
    this.loggedAt = Date()
    (this as RealmObject).store()
}
Run Code Online (Sandbox Code Playgroud)

我想要的是如果我调用.store()任何RealmObject对象,RelamObject.store()扩展名将被调用但是如果我.store()在一个Player实例上调用将被调用的扩展名Player.store().(现在没问题)我不想复制粘贴相同的代码,我喜欢写更少的重用更多.所以我需要在内部Player.store()调用泛型RealmObject.store()

我知道了.我在那里写的代码实际上按预期工作:D

我要问的是(仅仅因为我是通过个人直觉写的):

这是好方法吗?!还是有更好的方法?

谢谢

super kotlin kotlin-extension kotlin-android-extensions

5
推荐指数
1
解决办法
333
查看次数