温馨提示
写博客是为了记录在开发过程中所涉及到的技术以及遇到的问题的解决,如果该博客对您有所帮助,希望可以点个关注/喜欢;如果您对文章中的内容有什么不同的见解,欢迎留言进行讨论。谢谢!
一、基本互操作
1、属性读写
- Kotlin 自动识别 Java Getter/Setter
- Java 操作 Kotlin 属性通过 Getter/Setter
2、空安全类型
- Kotlin 空安全类型的原理
- 平台类型 Platform Type,自己明确传入的参数和返回值是否可能为空
- 可使用注解 @Nullable 和 @NotNull 来确保不能为空
3、几类函数的调用
- 包级函数:静态方法
- 扩展方法:带Receiver 的静态方法
- 运算符重载:带 Receiver 的对应名称的静态方法
4、几个常用注解的使用
- @JvmField : 将属性编译为 Java 变量
- @JvmStatic : 将对象的方法编译成 Java 静态方法
- @JvmOverloads : 默认参数生成重载方法
- @file:JvmName : 知道 Kotlin 文件编译后的类名,默认为 Kotlin 文件名+Kt
5、NoArg 与 AllOpen
- NoArg 为被标注的类生成无参构造方法
- NoArg 支持 Jpa 注解,如:@Entity
- AllOpen 为被标注的类去掉 final ,允许被继承
- AllOpen 支持 Spring 注解,如: @Component
- 支持自定义注解类型,如:@PoKo
6、泛型
- 通配符 Kotlin 的 * 对象于 Java 的 ?
- 协变和逆变 out/in
ArrayList<out String>
- 没有 Raw 类型
Java 的List -> Kotlin 的List<*>
二、SAM 转换
- Single Abstract Method
- SAM 转换的条件
Java的接口,单一接口方法 - 注意转换后的实例变化
三、正则表达式
- 用 Raw 字符串定义正则表达式
- Java 的 Pattern 在 Kotlin 中同样适用
- 可通过Kotlin 的 Regex 自定义Kotlin 风格的正则表达式
四、集合框架
- Kotlin 到 Java 的类型映射
- 不可变与可变集合接口,Kotlin 中所有的List,Map,Set 都是不可变的接口
- 部分接口优化,比如:list.removeAt(0);
五、IO 操作
- File、Stream、Reader、Writer的扩展方法
- 使用use 扩展自动关闭资源
- 小文件一次性读取 readLines()
六、装箱与拆箱
- Java 的基本数据类型,都会映射到 Kotlin 中的基本类型
- 由于Kotlin 中不区分Java 中的装箱类型与拆箱类型,需要注意规避基本类型相关的问题
七、注解处理器
- apply plugin: “kotlin-kapt”
- 注意添加生成的代码路径到 SourceSets{}
- 注意 Intellij 暂时不支持注解处理器的编译