Pasando 'esto' a un Constructor

Digamos que tengo open class C(val c:C) y quiero subclasificarla como class D():C(this)

Esto no es válido según el comstackdor porque 'this' is not defined in this context

¿Hay alguna manera de lograr que esto haga lo que yo quiero? Específicamente, me gustaría que D tuviera un constructor al que se pudiera llamar sin ningún argumento y pasaría el object D que se estaba construyendo al constructor de C En mi caso, está bien que este object aún no esté completamente construido.

Estoy abierto a cualquier solución que no implique cambiar C , reflection incluido.

No hay una solución sencilla, porque no parece ser una buena idea.

El constructor de la superclass se ejecuta antes que el constructor de la class ( más detalles aquí ). Pasar this instancia que no se ha inicializado en absoluto al superconstructor en lugar de una instancia válida puede romper parte de la lógica del superconstructor (por ejemplo, puede esperar que las properties de c tengan algunos valores significativos, pero no 't).

Si lo necesitas tan mal, puedes intentar crear una instancia de D primero con C falsa / pnetworkingeterminada, luego crear otra D con la primera:

 class D(c: C) : C(c) fun createD(defaultC: C): D { val firstD = D(defaultC) return D(firstD) } 

Aunque esto definitivamente no cubre todos los casos de uso posibles.

  • NoClassDefFoundError en la class Kotlin en la testing JUnit en time de ejecución
  • Al utilizar tanto publishOn como subscribeOn en un flujo, no ocurre nada
  • Android Kotlin Extension super calling
  • Al usar setcontentview en un BottomsheetDialog se produce un error como "ninguna de las siguientes funciones se puede invocar con los arguments suministrados"
  • Aplicando transformación a cada elemento en Single <List <T >>
  • ¿Pasar lambdas a Observable.subscribe en kotlin dará como resultado pérdidas de memory?
  • no se puede llamar al module kotlin desde el module java
  • Propiedades sintéticas de Kotlin
  • Esperando la statement del miembro
  • Gradle tomando time al frente aparentemente sin hacer nada
  • Memoración de la function miembro de la class de datos Kotlin