iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java与Kotlin互调怎么实现
  • 938
分享到

Java与Kotlin互调怎么实现

2023-06-29 05:06:12 938人浏览 薄情痞子
摘要

这篇文章主要讲解了“Java与Kotlin互调怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java与Kotlin互调怎么实现”吧!一、Kt调用-Java参数非null的处理@Not

这篇文章主要讲解了“Java与Kotlin互调怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java与Kotlin互调怎么实现”吧!

一、Kt调用-Java参数非null的处理

@NotNull

class TestJava {    public void toNotNull(@NotNull String title) {}    public void toNull(String title){}}

Kotlin中调用

Java与Kotlin互调怎么实现

二、Kt调用- Java中使用kt关键字声明的变量和方法

kotlin中调用java方法,参数时,如果含有Kotlin关键字,必须增加 反引号 ``

public Object object;//使用kotlin中关键字命名的方法public void is() {}

Kotlin中调用

 testJava.`is`() testJava.`object`

三、Kt调用Java-SAM转换

在Kotlin中调用带有接口参数的方法时,如果这个接口只有一个方法,那么就可以通过 lambda 表达式实现 SAM转换,从而简化我们的代码。

示例如下:

public class TestJavaSam {      void singleFun(@NotNull IListener iListener) {}    void noParameter( @NotNull IListener iListener,int sum) {}    void noParameterClean(int sum,@NotNull IListener iListener) {}}interface IListener {    void onClick();}

在Kotlin中调用

fun main() {    val sam = TestJavaSam()    sam.singleFun {    }    sam.noParameter({            //如果更改一下java方法参数的顺序,那么就会更简洁,如下    },123)    sam.noParameterClean(123){    }}

四、Kt中禁止Java调用某方法

@JVMSynthetic

Kotlin中,有些方法并不想暴露给Java调用,这时就可以增加这个注解在方法上。

@JvmSyntheticfun toMain() {}

此时toMain() 在Java中将无法调用到。

五、Java调用Kt-扩展函数

@file:JvmName(“xx”)

在java中使用Kotlin的扩展函数时,我们都会使用相应的类名+Kt 去调用相关的方法,有时候我们想自定义相应的工具类,就显得稍显麻烦,如下:

比如我们有一个顶级扩展函数,位于 UiExpand.kt 中:

fun Int.px() {}**Java中调用 **  //Java调用kotlin类-(UiExpand)-Int.px() 扩展方法  UiExpandKt.px(20);

如上所示,在Java中调用时,我们必须已文件名+kt后缀才可以调用。

通过给 UiExpand.kt 包名上增加 @file:JvmName(“Ui”),我们就可以实现自定义生成的类名去调用

如下:

Ui.px()

六、Java调用kt-成员变量

@JvmField

在Java中,我们去调用Kotlin 的 成员变量 时,编译器都会帮我们自动生成相应的 get,set方法,这很符合Java Bean的写法,但是有些是有我们只是想直接去调用,这个时候就可以这样去做。

Kotlin

data class TestKotlinBean(  @JvmField val message: String,   @JvmField val title: String)**Java中调用 ** TestKotlinBean testKotlinBean = new TestKotlinBean("",""); String message = testKotlinBean.message; String title = testKotlinBean.title;

当然对于 如下的示例,就算不用增加上面的注解,在java也都是可以直接调用,免除get,set

lateinit var sum: StrinGobject UserPicCache{        const val KEY_CACHE = "CACHE" }

@get:JvmName,@set:JvmName

有些时候,我们只是想让其生成其中的一个set或者get方法,这个时候就可以使用上述注解。

Kotlin

data class TestKotlinBean(    @set:JvmName("setMessage")    var message: String,    @get:JvmName("getTitle")    val title: String)

Java中调用:

 TestKotlinBean testKotlinBean = new TestKotlinBean("", ""); testKotlinBean.setMessage("message"); testKotlinBean.getTitle();

七、Java调用Kt-伴生对象

@JvmStatic

当我们在Java中调用 Kotlin 伴生对象的方法或者变量时,必须通过 类名.CompaNIOn.xx 的方式才可以调用。这时候,我们就可以增加

@JvmStatic 来直接调用。

Kotlin

class Log {    companion object {        var time: String = ""        fun toLog() {        }    }}

在Java中调用:

 ToLog.toLog(); ToLog.getTime();

不过需要注意的是,@JvmStatic 对性能没有任何提升,因为相应的,编译器又生成了一个静态方法,对于可变变量,会生成两个静态方法set,get。

Java与Kotlin互调怎么实现

八、Java调用Kt-方法默认参数值

@JvmOverloads

在Kotlin中,对于方法参数,我们可能会加入一些默认值,便于更好的使用,但是在Java中,如果调用时不传递相应的方法参数,就会提示报错,这种使用就可以使用@JvmOverloads 修饰方法。

kotlin

object DialogUtils {    @JvmStatic    @JvmOverloads    fun showPromptDialog(title: String = "提示") {    }}

在java中调用

DialogUtils.showPromptDialog();DialogUtils.showPromptDialog("标题");

感谢各位的阅读,以上就是“Java与Kotlin互调怎么实现”的内容了,经过本文的学习后,相信大家对Java与Kotlin互调怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Java与Kotlin互调怎么实现

本文链接: https://www.lsjlt.com/news/322887.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java与Kotlin互调怎么实现
    这篇文章主要讲解了“Java与Kotlin互调怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java与Kotlin互调怎么实现”吧!一、Kt调用-Java参数非null的处理@Not...
    99+
    2023-06-29
  • Java与Kotlin互调原理讲解
    目录一、Kt调用-Java参数非null的处理@NotNullKotlin中调用二、Kt调用- Java中使用kt关键字声明的变量和方法Kotlin中调用三、Kt调用Java-SAM...
    99+
    2022-11-13
  • Kotlin与Java如何相互调用
    这篇文章主要介绍了Kotlin与Java如何相互调用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、Kotlin 调用 Java kotlin 关键字转义java 中的方法...
    99+
    2023-06-25
  • Kotlin与Java相互调用的完整实例
    目录一、Kotlin 调用 Java二、Java 调用 Kotlin附 Github 源码:总结一、Kotlin 调用 Java 1. kotlin 关键字转义 java 中的方法或...
    99+
    2022-11-12
  • 【Kotlin】Kotlin 与 Java 互操作 ① ( 变量可空性 | Kotlin 类型映射 | Kotlin 访问私有属性 | Java 调用 Kotlin 函数 )
    文章目录 一、Kotlin 变量可空性1、Java 与 Kotlin 空值处理区别2、Java 函数返回非空值和控制3、Kotlin 函数调用 Java 函数4、平台类型5、@NotNull 和 @Nullable 注解 二、K...
    99+
    2023-08-22
    kotlin 可空性 Java 类型映射 JvmName注解
  • 怎么实现C#与Lua相互调用
    这篇文章主要介绍“怎么实现C#与Lua相互调用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么实现C#与Lua相互调用”文章能帮助大家解决问题。一、编译Lua动态链接库1. 编译Windows下使...
    99+
    2023-06-30
  • Android应用中怎么实现与H5互调
    Android应用中怎么实现与H5互调?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。案例一:Java与Js简单互调    ...
    99+
    2023-05-31
    android h5 roi
  • Flex与JavaScript中怎么实现交互中调用
    今天就跟大家聊聊有关Flex与JavaScript中怎么实现交互中调用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、在JavaScript中调用Flex方法在Flex中可以用Ex...
    99+
    2023-06-17
  • Naive与WebView在Android中怎么实现互相调用
    本篇文章为大家展示了Naive与WebView在Android中怎么实现互相调用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Android  Naive与WebView的互相调用详解An...
    99+
    2023-05-31
    android naive webview
  • Java代码中与Lua相互调用实现详解
    目录一、方案二、性能测试1. ScriptEngine调用方式2. Globals调用方式3. lua调用java三、结论四、其他调用方式?一、方案 Java与Lua相互调用案例比较...
    99+
    2022-11-13
  • python 与c++相互调用实现
    目录一、c++调用Python1.Python脚本2.C++调用python脚本二、接口方法1.规范化语法三、Pthon调用c++1.基于extern2.基于swig一、c++调用P...
    99+
    2022-11-13
  • Java中string与int怎么实现互相转换
    本篇文章为大家展示了Java中string与int怎么实现互相转换,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。int -> String int i=12345;String s="...
    99+
    2023-05-31
    java string int
  • C++如何实现与Lua相互调用
    今天小编给大家分享一下C++如何实现与Lua相互调用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。概述从本质上来看,其实说是...
    99+
    2023-07-05
  • JavaScript与HTML怎么实现交互
    这篇文章主要介绍“JavaScript与HTML怎么实现交互”,在日常操作中,相信很多人在JavaScript与HTML怎么实现交互问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-19
  • json与javabean怎么实现互转
    json与javabean怎么实现互转?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。JSONObject 与 JSONArray区别JSONObject:{"ar...
    99+
    2023-06-14
  • PHP与Javascript怎么实现交互
    PHP与Javascript怎么实现交互,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。PHP与Javascript交互的方法:通过Cookie交互。一共是三个文件,分别为:...
    99+
    2023-06-17
  • Java图片与二进制相互转换怎么实现
    这篇文章主要介绍了Java图片与二进制相互转换怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java图片与二进制相互转换怎么实现文章都会有所收获,下面我们一起来看看吧。1、下面是一个完整的代码示例指定文...
    99+
    2023-07-05
  • Java中BeanMap怎么实现对象与Map相互转换
    这篇文章主要介绍“Java中BeanMap怎么实现对象与Map相互转换”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java中BeanMap怎么实现对象与Map相互转换”文章能帮助大家解决问题。ja...
    99+
    2023-06-29
  • Vue3父子组件互调怎么实现
    今天小编给大家分享一下Vue3父子组件互调怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、父组件调用子组件方法下面...
    99+
    2023-06-30
  • 怎么在java中实现多线程的互斥与同步
    这篇文章将为大家详细讲解有关怎么在java中实现多线程的互斥与同步,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、线程互斥与同步互斥:指的是多个线程不能同时访问共享变量同步:指的是多个线程...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作