[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).