参考官方文档:https://developer.android.google.cn/kotlin/interop?hl=zh-cn
一、Java(供 Kotlin 使用)
1、不得使用硬关键字
不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识符。
-
硬关键字
as、as?、break、class、continue、do、else、 false、for、fun、if、in、!in、interface、is、!is、null、object、package、super、this、throw、true、typealias、typeof、val、var、when、while。 -
软关键字、修饰符关键字和特殊标识符
https://kotlinlang.org/docs/keyword-reference.html#hard-keywords
2、避免使用 Any 的扩展函数或属性的名称
3、可为 null 性注释
- 公共 API 中的每个非基础参数类型、返回类型和字段类型都应 具有可为 null 性注解。
- 未加注解的类型会被解释为 “平台”类型,这些类型是否可为 null 性不明确。
4、Lambda 参数位于最后
- 符合 SAM 转换条件的参数类型应位于最后。例如,RxJava 2 的 Flowable.create() 方法签名定义为:
public static <T> Flowable<T> create(
FlowableOnSubscribe<T> source,
BackpressureStrategy mode) {
/* … */ }
// 在 kotlin 中调用时显示为
Flowable.create({
/* … */ }, BackpressureStrategy.LATEST)
- 如果方法签名中的参数颠倒顺序,则函数会调用 可以使用尾随 lambda 语法:
public static <T> Flowable<T> create(
BackpressureStrategy mode,
FlowableOnSubscribe<T> source) {
/* … */ }
// 在 kotlin 中调用时显示为
Flowable.create(BackpressureStrategy.LATEST) {
/* … */ }
5、属性前缀
- 对于在 Kotlin 中要表示为属性的方法,需要严格的**“bean”样式** 前缀。
- 访问器方法需要 get 前缀;对于布尔值返回方法,则为 is 前缀。
- 更改器方法需要 set 前缀。
- 如果希望方法作为属性公开,请不要使用非标准前缀,例如 has、set 或无 get 前缀的访问器。带有非标准前缀的方法 也可作为函数进行调用,具体取决于 方法的行为。
public final class User {
public String getName() {
/* … */ }
public void setName(String name) {
/* … */ }
public boolean isActive() {
/* … */ }
public void setActive(boolean active) {
/* … */ }
}
// 对应的 kotlin 代码
val name = user.name // Invokes user.getName()
val active = user.isActive // Invokes user.isActive()
user.name = "Bob" // Invokes user.setName(String)
user.isActive = true // Invokes user.setActive(boolean)
6、运算符过载
- 允许特殊调用点语法。
public final class IntBox {
private final int value;
public IntBox(int value) {
this.value = value;

最低0.47元/天 解锁文章
722

被折叠的 条评论
为什么被折叠?



