Kotlin与Java相互调用

时间:2022-01-19 17:26:04

Kotlin的设计过程中就考虑到了与Java的互操作性。在Kotlin中可以直接调用既有的Java代码, 反过来在Java中也可以很流畅地使用Kotlin代码。
 

Kotlin 调用 Java

一、大多数Java代码,可以直接调用:

fun () {
    val list = ArrayList<string>()
    list.add("hello world")
}

二、特殊的调用规则

以下为Kotlin调用Java的一些特殊调用规则

  1. 返回值为void的方法, 在 Kotlin 中调用时将返回 Unit。
  2. 符合 Java 的 Getter 和 Setter 规范的方法,在 Kotlin 中会被识别为属性。
  3. 某些 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();
}