¿Hay una manera de constructores Heredar Kotlin?

Pau Garcia Gozálvez:

Tengo una Parentclase que se extiende por una gran cantidad de niño y quiero evitar copiar el largo constructor en cada uno de ellos, ya que es siempre la misma.

open class Parent(arg1: Any, arg2: Any, arg3: Any...)

class ChildA(arg1: Any, arg2: Any, arg3: Any...): Parent(arg1, arg2, arg3...)
class ChildB(arg1: Any, arg2: Any, arg3: Any...): Parent(arg1, arg2, arg3...)
[...]

¿Hay una manera de heredar el constructor o tal vez una función implementada en el Parentque se crea la instancia de una Childclase?

Editar

Mi expectativa es implementar las Childclases sin tener que definir su constructor. La razón es que tengo unos 15 Childs y cada parámetro tiene un valor opcional, por lo que el código resultante no es tan bonito.

Alexey Romanov:

Si es siempre el mismo (o sólo extendida), puede crear una clase para la celebración de los parámetros:

data class ConstructorParams(arg1: Any, arg2: Any, arg3: Any...)

open class Parent(params: ConstructorParams)

class ChildA(params: ConstructorParams) : Parent(params)

class ChildB(params: ConstructorParams, extraParam: Int) : Parent(params)

Se podría añadir a la misma una función de ayuda para evitar explícita ConstructorParamscuando una instancia de la clase, pero tiene un equilibrio de rendimiento (aunque esta versión no funcionará para Child2):

inline fun <reified T : Parent> create(arg1: Any, arg2: Any, arg3: Any...) = 
    T::class.primaryConstructor.call(ConstructorParams(arg1, arg2, ...))

create<Parent>(1, 2, "")

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=192931&siteId=1
Recomendado
Clasificación