Android Kotlin Extension super calling

soy un desarrollador de Android Java y me estoy acercando a Kotlin

Definí la siguiente class:

open class Player : RealmObject() { ... } 

Y definí las siguientes dos extensiones, una para la class genérica RealmObject y otra para la class de jugador específica:

 fun RealmObject.store() { Realm.getDefaultInstance().use { realm -> realm.beginTransaction() realm.copyToRealmOrUpdate(this) realm.commitTransaction() } } fun Player.store(){ this.loggedAt = Date() (this as RealmObject).store() } 

Lo que quiero es si llamo .store() a cualquier object RealmObject , la extensión RelamObject.store() se llamará PERO si llamo a .store() en una instancia de Player , la extensión que se llamará será Player.store() (No hay problema por ahora) No quiero copyr pegar el mismo código, me encanta escribir less reutilizar más. Necesito que internamente Player.store() llame al genérico RealmObject.store()

Entiendo. El código que escribí allí realmente está funcionando como esperaba: D

Lo que estoy preguntando es (solo porque lo escribí solo por intuición personal):

¿Es esta la buena manera? O hay alguna forma mejor?

Gracias

    Su enfoque parece ser perfectamente correcto, porque hace exactamente lo que se necesita. Kotlin resuelve las llamadas de extensión basadas en el tipo estático (inferido o declarado) de la expresión del receptor, y el molde (this as RealmObject) el tipo de expresión estática RealmObject .

    Otra forma válida de hacerlo, de la cual no estoy seguro si es mejor, es utilizar una reference invocable a la otra extensión:

     fun Player.store(){ this.loggedAt = Date() (RealmObject::store)(this) }