这篇文章主要介绍了Kotlin与Java如何相互调用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、Kotlin 调用 Java kotlin 关键字转义java 中的方法
这篇文章主要介绍了Kotlin与Java如何相互调用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
kotlin 关键字转义
java 中的方法或变量 是 kotlin 的关键字时,使用反引号 `` 对关键字进行转义
// javapublic class JavaDemo { String is; public String getIs() { return is; } public void setIs(String is) { this.is = is; } public void in() { System.out.println("call java method in"); } public void multiParams(int... params) { System.out.println(Arrays.toString(params)); }}
// kotlinfun main() { // 1. java 中的方法或变量 是kotlin 的关键字时,使用反引号 `` 对关键字进行转义 val demo = JavaDemo() // 调用 java 的 is 属性,is 是 kotlin 的关键字,使用反引号转义 demo.`is` = "call java field" println(demo.`is`) // call java field // 调用 java 的 in 方法,in 是 kotlin 的关键字,使用反引号转义 demo.`in`() // call java method in}
kotlin 可将数组传给 java 的可变数量参数
// kotlin// 使用 * 号将 kotlin 的 数组 传给 java 的 可变数量参数fun main() {val arrayInt = intArrayOf(1, 2, 3)demo.multiParams(*arrayInt) // [1, 2, 3]}
kotlin 获取对象的 java 类
// kotlinfun main() { demo::class.java demo.javaClass}
java 调用 kotlin 类的属性和方法
// kotlinclass KotlinDemo { var field: String = "kotlin field" fun method() { println("call kotlin method") }}
// javapublic static void main(String[] args) {KotlinDemo demo = new KotlinDemo(); System.out.println(demo.getField()); // kotlin field demo.method(); // call kotlin method}
java 调用 kotlin 的顶级属性和顶级函数
// kotlinval topLevelField: Int get() { println("call kotlin top level field") return 1 }fun topLevelFunc() { println("call kotlin top level function")}
// javapublic static void main(String[] args) {TestCallEachOtherKt.getTopLevelField(); // call kotlin top level field TestCallEachOtherKt.topLevelFunc(); // call kotlin top level function}
java 调用生成指定类名的 kotlin 属性和函数
// kotlin// 指定文件生成的 Java 类或方法的名称。@file:JVMName("CallKtDemo")package com.william.testktvar field: Int = 100fun method() { println("call CallKtDemo method")}
// javapublic static void main(String[] args) {System.out.println(CallKtDemo.getField()); CallKtDemo.method();}
java 调用 kotlin 的伴生对象的方法和静态方法
// kotlinclass TestCallKotlin { compaNIOn object { // 模拟静态方法 fun method1() { println("call method1") }// 静态方法 @JvmStatic fun method2() { println("call method2") } }}
// javapublic static void main(String[] args) {TestCallKotlin.Companion.method1();TestCallKotlin.method2();}
java 调用 kotlin 单例类的方法
// kotlinobject KotlinObject { fun method1() { println("call method1") } @JvmStatic fun method2() { println("call method2") }}
// javapublic static void main(String[] args) {KotlinObject.INSTANCE.method1(); KotlinObject.method2();}
java 调用 kotlin 含有 lambda 表达式参数的方法
// kotlinobject KotlinObject { // 参数为 lambda 表达式,入参为 Int,返回值为 Unit @JvmStatic fun method3(param: (Int) -> Unit = {}) { param.invoke(101) } // 参数为 lambda 表达式,入参为 Boolean,返回值为 String @JvmStatic fun method4(param: (Boolean) -> String = { "" }) { param.invoke(true) }}
// javapublic static void main(String[] args) {KotlinObject.method3(new Function1<Integer, Unit>() { @Override public Unit invoke(Integer integer) { System.out.println(integer); return null; } }); KotlinObject.method4(new Function1<Boolean, String>() { @Override public String invoke(Boolean param) { System.out.println("invoke param: " + param); return param ? "success" : "failed"; } });}
感谢你能够认真阅读完这篇文章,希望小编分享的“Kotlin与Java如何相互调用”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!
--结束END--
本文标题: Kotlin与Java如何相互调用
本文链接: https://www.lsjlt.com/news/306364.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-09
2024-05-09
2024-05-09
2024-05-09
2024-05-09
2024-05-09
2024-05-09
2024-05-09
2024-05-09
2024-05-09
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0