Kotlin 个人踩坑

1. kotlin的Null Safety很方便。但是在和java做interop的时候需要额外小心。

例,java的List可能为空对象,kotlin的List为非空对象。

将一个java List转成kotlin List后,list?.forEach{...}, intellij会提示冗余的非空检查,使用list.forEach{...}就可以了。

但是非空检查其实是有必要的。尤其是调用java第三方类库的时候,可能返回空值。

2.扩展方法重名的问题。

kotlin允许对类(Class)添加扩展方法。

调用的时候直接通过obj.extensionMethod{...}即可,本意是提供更多的语法糖。但是随着引入类库的增多,及自定义扩展方法的增多,会出现不同实现的同名方法。都是通过obj.extensionMethod{...}调用。

需要额外小心选择正确的方法导入,建议不要开启intellij的自动导入,可能会导入错误的实现。

比如,List.flatMap{...}在kotlin.Collection和arrow库中都存在,但实现方式不同,返回值不同,按需正确导入调用。

原文地址:https://www.cnblogs.com/cnsec/p/13547558.html