kotlin与java互调

1、java调用kotlin

java

public class Client {

    public static void main(String[] args) {

        // MyUtilsKt.show("Derry1");

        new MyUtils().show("new Derry2");
    }

}

kotlin

class MyUtils {

    fun show(info: String) {
        println(info)
    }

}

2、kotlin调用java

java

public class JavaStudent {

    public static String in = "INNNNNN";

    public String getString() {
        return null;
    }
}

kotlin

fun main() {

    // 解决冲突问题
    println(JavaStudent.`in`)

    // 调用Java函数  String!,由于是! 你最好 var str: String ? =
    // avaStudent().string.length  错误的示范  会出现nullPointException
    var str: String? = JavaStudent().string
    println(str?.length)

    // Class  java kt
    showClass(JavaStudent::class.java)

    showClass2(KtStudent::class)

}
// 行参里面 java
fun showClass(clazz: Class<JavaStudent>) { }

// 全部都用 kt
fun  showClass2(clazz: KClass<KtStudent>) { }

3、kt 使用 Java Callback

java

public interface JavaCallback {

    void show(String info);

}

kotlin

 // 第一种写法
    JavaManager().setCallback(JavaCallback {
        println(it)
    })

    // 第二种写法
    JavaManager().setCallback(object : JavaCallback{
        override fun show(info: String?) {
            println(info)
        }
    })

    // 第三种写法
    val callback = JavaCallback {
        println(it)
    }
    JavaManager().setCallback(callback)

    // 第四种写法
    val callback2 = object : JavaCallback{
        override fun show(info: String?) {
            println(info)
        }
    }
    JavaManager().setCallback(callback2)

4、kt 使用 kt Callback

//定义kotlin接口
interface KTCallback {

    fun show(name: String)

}

    // 1
    KtManager().setCallback(object : KTCallback{
        override fun show(name: String) {
        }
    })

    // 2
    val c = object : KTCallback{
        override fun show(name: String) {  }
    }
    KtManager().setCallback(c)

    // Kt不能像Java一样的写法
    /*KtManager().setCallback(KTCallback{

    })*/
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容