Kotlin与Java相互调用
Kotlin的设计过程中就考虑到了与Java的互操作性。在Kotlin中可以直接调用既有的Java代码, 反过来在Java中也可以很流畅地使用Kotlin代码。
Kotlin 调用 Java
一、大多数Java代码,可以直接调用:
fun () {
val list = ArrayList<string>()
list.add("hello world")
}
二、特殊的调用规则
以下为Kotlin调用Java的一些特殊调用规则
- 返回值为void的方法, 在 Kotlin 中调用时将返回 Unit。
- 符合 Java 的 Getter 和 Setter 规范的方法,在 Kotlin 中会被识别为属性。
- 某些 Kotlin 关键字在 Java 中是合法的标识符,如:in、object、is等,在Kotlin中使用时要使用反引号转义,如
object
。
// Java 代码
public class Person {
private String name;
public void speak() {
System.out.println("My name is " + name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在Kotlin中调用Java代码
fun callJava() {
val person = Person()
person.name = "Haosir"
person.speak()
}
Java调用Kotlin
可以直接通过 getter / setter 方法对 Kotlin 类的属性取值或赋值;
// Kotlin代码
class AlphaGo(var version: String) {
fun play() {
print("AlphaGo $version is play GO")
}
}
在Java中调用Kotlin代码
public void callKotlin() {
AlphaGo alphaGo = new AlphaGo("3.0");
String version = alphaGo.getVersion();
alphaGo.play();
}