Ich bin derzeit eine DSL für eine Bibliothek zu schreiben, und ich mag Typen Metadaten verdinglichten Typen Parameter wie folgt liefern:Wie kann ich verdinglichte Daten in Instanzfeldern in Kotlin speichern?
val config = Config.create()
.consumerFor<MyType>{
// consume
}
Mein Problem ist, dass ich nur verwenden, kann das reified
Schlüsselwort in inline
Funktionen und in einer inline
Funktion kann ich nicht Instanzfelder wie folgt verwenden:
inline fun <reified T> consumerFor(consumer: (T) -> Unit) {
consumers.put(T::class.java, consumer)
return this
}
, weil ich einen Fehler:
Public-API inline function cannot access non-public-API 'private final val consumers...
Es scheint so weit zu sein, dass ich die Parameter des verdinglichten Typs nicht verwenden kann, wo sie am nützlichsten wären. Gibt es einen Workaround dafür?
Das wird gut, danke. Dies ist nur eine Konfigurationsklasse mit endgültigen Feldern, also macht es mir nichts aus. –