Oft finde ich mich in einer Situation, wo ich eine Superklasse habe, die viele optionale Parameter hat, und diese gleichen Parameter müssen auch optionale Parameter in seinen Unterklassen sein.Kotlin: Wie kann ich Code-Duplizierung in Konstruktoren vermeiden?
Zum Beispiel die Oberklasse:
abstract class Plugin(val name: String, val version: String = "1.0",
val author: String = "", val description: String = "")
diese Klasse erstreckt sich ein Schmerz. Hier ist ein Beispiel Unterklasse:
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)
Hinweis: Ich werde diese Frage mit meiner Lösung beantworten. Ich bin auf der Suche nach einer besseren Lösung.
Ein weiterer Grund, Vererbung zu vermeiden :) Wenn diese Parameter optional sind, warum sie überhaupt im Konstruktor verwenden? Stattdessen könnten Sie einfach die reguläre Eigenschaft 'var optionalProperty: String? = "DefaultValue" 'in der Basisklasse. – miensol