[Kotlin] Varags und nullable Types

Gerade eben hatte ich den Fall, dass ich einen nullable Type als Parameter an eine varags-Methode übergeben wollte.
Der varargs-Typ ist aber natürlich nicht nullable.

fun methodWithVarargs(vararg names: String) {[…]}

val nameOrNull: String? = null
methodWithVarargs(nameOrNull) //Does NOT compile!Code-Sprache: Kotlin (kotlin)

Was also tun?

Die Lösung

Für Listen gibt es die schöne Methode listOfNotNull(). Leider noch nicht für Arrays.
Deshalb habe ich mir eine kleine Extension-Methode erstellt:

/**
 * Returns an array that contains this (if not null) or is empty (if this == null)
 */
inline fun <reified T> T?.arrayOfNotNull(): Array<T> {
  return if (this != null) arrayOf(this) else emptyArray()
}Code-Sprache: Kotlin (kotlin)

Bitte beachten: „reified“ ist notwendig, da in der Methode ein Array vom konkreten Type erzeugt wird. (Bei Listen ist die Typinformation zur Laufzeit dagegen nicht enthalten).