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.

  • Obtener class de list con generics, por ejemplo: Lista <Número> :: class
  • locationManager.getBestProvider devuelve nulo para API 15 (API <23)
  • Mutar cadena de una extensión
  • Osmdroid y Osmdroid bonuspack cómo usar CacheManager
  • ¿Alguna diferencia entre "Subject.asObservable ()" y el tema en sí "Subject"?
  • Necesidad de get una ruta absoluta de una página web con Java
  • findViewById ClassCastExcpetion
  • ¿Dónde deberían savese los files de estado?
  • Variables "coroutine local" en kotlin
  • Usar en operador para comparar cadena con range de cadenas
  • Convierta la function de Scala a la function de Kotlin