¿Cómo pasar vararg a una function varag o constructor en Kotlin?

Kotlin no permite que mi subclass pase a vararg a mi constuctor de superclass. Aquí está mi class de Operación:

package br.com.xp.operation import java.util.ArrayList abstract class Operation(vararg values: Value) : Value { protected var values: MutableList<Value> = ArrayList() internal abstract val operator: String } 

y aquí está mi class de SubtractionOperation:

 package br.com.xp.operation class SubtractionOperation private constructor(vararg values: Value) : Operation(values) { override val operator: String get() = "-" } 

La compilation dice:

Tipo no coincidente Valor requerido encontrado Array

¿Alguien puede explicar por qué esto no es posible?

De los documentos :

Dentro de una function, un vararg de tipo T es visible como una matriz de T

Entonces, en el constructor de SubtractionOperation , los values son realmente un Array<Value> . Debe utilizar el operador de difusión ( * ) para reenviar estos en:

 class SubtractionOperation private constructor(vararg values: Value) : Operation(*values) ...