美文网首页
kotlin与java互调

kotlin与java互调

作者: 逆光_初见 | 来源:发表于2023-01-30 16:44 被阅读0次

    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{
    
        })*/
    

    相关文章

      网友评论

          本文标题:kotlin与java互调

          本文链接:https://www.haomeiwen.com/subject/kkgmhdtx.html