Kotlin中调用含vararg参数的API时如何过滤空值?
解决方案
当然可行,你可以借助Kotlin的listOfNotNull和**展开操作符***来实现,不需要修改目标API方法。
具体做法:
- 用
listOfNotNull包裹所有可能为null的参数,它会自动过滤掉所有null元素,得到不含null的List<Param> - 将列表转为数组(
toTypedArray()) - 用展开操作符
*把数组展开为vararg参数传入API
修改后的调用代码如下:
someFun() { apiMethod( *listOfNotNull( Param("first"), Param("second"), null // 该null会被自动过滤 ).toTypedArray() ) }
原理说明:
listOfNotNull的核心特性就是仅保留非null元素,刚好满足你的过滤需求- Kotlin的
*操作符支持将数组展开为vararg参数,完美匹配apiMethod的参数要求
内容的提问来源于stack exchange,提问作者testivanivan
相关产品推荐
相关产品推荐

