Le problème vient du fait que Kotlin délégation de classe ne permet de déléguer qu'aux paramètres du constructeur, ce qui semble vous obliger à fournir un argument au constructeur.
Vous trouverez ci-dessous ma question initiale concernant un cas d'utilisation concret de ce problème.
Je souhaite procéder comme suit :
val myTable1: MyTable = MyTable()
où
-
MyTable
hérite de ImmutableTable ( src ) ou au moins Tableau - et je n'ai pas besoin de déléguer manuellement tous les
Table
à une implémentation de base.
Je souhaite également éviter les situations suivantes :
val myTable2: MyTable = MyTable.build()
Je ne veux pas être obligé d'utiliser des objets compagnons ou des méthodes d'usine statiques.
J'ai essayé d'étendre ImmutableTable
mais je reçois This type has a constructor, and thus must be initialized here
.
J'ai essayé d'étendre Table
et lui déléguer (pour éviter de réimplémenter des méthodes), mais je suis alors obligé de fournir une instance de Table
comme paramètre du constructeur. Je ne peux pas simplement l'initialiser dans init {}
bloc.
Voir ce gist pour mes tentatives exactes.
Version de Kotlin utilisée : 1.0.2