Spesso mi trovo in una situazione in cui ho una superclasse che ha molti parametri opzionali, e quegli stessi parametri devono essere anche parametri opzionali nelle sue sottoclassi.Kotlin: Come posso evitare la duplicazione del codice nei costruttori?
Per esempio, la superclasse:
abstract class Plugin(val name: String, val version: String = "1.0",
val author: String = "", val description: String = "")
Estendendo questa classe è un dolore. Ecco un esempio sottoclasse:
abstract class CyclePlugin(name: String, version: String = "1.0", author: String = "",
description: String = "", val duration: Int, val durationUnit: TimeUnit
= MILLISECONDS) : Plugin(name, version, author, description)
Nota: Risponderò a questa domanda con la mia soluzione. Sono alla ricerca di una soluzione migliore.
Ancora un altro motivo per evitare l'ereditarietà :) Se questi parametri sono opzionali, perché usarli nel costruttore? Invece si potrebbe semplicemente dichiarare la proprietà regolare 'var optionalProperty: String? = "DefaultValue" 'nella classe base. – miensol