Kotlin: исключить нули из списка (или другого функционального преобразования)

проблема

Каков идиоматический способ обойти это ограничение нулевой безопасности в системе типа Котлина?

val strs1:List<String?> = listOf("hello", null, "world")

// ERROR: Type Inference Failed: Expected Type Mismatch:
// required: List<String>
// round:    List<String?>
val strs2:List<String> = strs1.filter { it != null }

Этот вопрос непросто об устранении нулей, но также и о том, чтобы система типов распознала, что нулевые значения удаляются из коллекции преобразованием.

Я бы предпочел не зацикливаться, но я сделаю это, если это лучший способ сделать это.

Работа-Around

Следующие компиляции, но я не уверен, что это лучший способ сделать это:

fun <T> notNullList(list: List<T?>):List<T> {
    val accumulator:MutableList<T> = mutableListOf()
    for (element in list) {
        if (element != null) {
            accumulator.add(element)
        }
    }
    return accumulator
}
val strs2:List<String> = notNullList(strs1)

Ответы на вопрос(1)

Ваш ответ на вопрос