【笔记】Kotlin与Java协同开发

前言

Kotlin与Java协同开发学习笔记

Java中定义Kotlin的非空类型

  • 只是通过注解显式的标注,为了让编辑器辅助检查,不会实际的定义成非空类型,实际使用时还需要判空
1
2
3
4
5
6
import org.jetbrains.annotations.NotNull;

public class 类名 {
@NotNull
数据类型 属性名;
}

Java中调用Kotlin中定义的全局变量或全局方法

  • Java中通过MainKt类指代Kotlin的全局类,将main之外的方法或变量作为MainKt类的属性
1
MainKt.全局方法()

Java中使用Kotlin定义的单例对象

1
2
3
object 类名 {
fun 方法名() {}
}
1
类名.INSTANCE.方法名();

Java中使用Kotlin定义的伴生对象

1
2
3
4
5
class 类名 {
companion object {
fun 方法名() {}
}
}
1
类名.Companion.方法名();

Kotlin中使用Java定义的in属性或方法

  • 因为Java中in不是关键字
1
2
3
public class 类名 {
数据类型 in = 值;
}
1
类名.`in` = 值

Kotlin中定义Java的静态属性

1
2
3
4
5
6
class 类名 {
companion object {
@JvmField
var 静态属性名: 数据类型 = 值
}
}
1
System.out.println(类名.静态属性名);

Kotlin中定义Java的静态方法

1
2
3
4
5
6
class 类名 {
companion object {
@JvmStatic
fun 静态方法名() {}
}
}
1
类名.静态方法名()

Kotlin使用主构造方法定义属性时定义Java的实例属性

1
class 类名(@JvmField var 属性名: 数据类型) {}

Kotlin中显式的定义编译后的字节码文件名

1
@file:JvmName("Kotlin编译的字节码文件名")
1
2
3
4
5
+ out
+ production
+ 项目名
+ META-INF
- Kotlin编译的字节码文件名.class

完成

参考文献

哔哩哔哩——青空の霞光