日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java 调用 Kotlin

發(fā)布時(shí)間:2025/3/21 java 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 调用 Kotlin 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Kotlin 和 Java 的互操作性是 Kotlin 的一大優(yōu)點(diǎn),Kotlin 調(diào)用 Java 已經(jīng)基本不需要特別去注意什么了,但是 Java 調(diào)用 Kotlin 代碼就不那么好看了。項(xiàng)目切換到 Kotlin 的過(guò)程中總會(huì)有兩種語(yǔ)言交錯(cuò)的時(shí)候,最近切換 Kotlin 的第一版就要上線(xiàn)了,就先總結(jié)一下已經(jīng)遇到的 Java 調(diào)用 Kotlin 的特殊姿勢(shì)。

不一樣的protected

  • Kotlin 繼承 Java 時(shí),可以直接拿到 protected 屬性
  • Kotlin 繼承 Kotlin 時(shí)也一樣
  • 但是 Java 繼承 Kotlin 時(shí),需要用 getter 和 setter 操作 protected 屬性
  • 舉個(gè)例子

[基類(lèi)定義]

?

?

[Java 中使用]

?

?

  • 如果在 Kotlin 父類(lèi)中是用 lazy 聲明的 protected 屬性,在 Java 中獲取還要加上getValue()(在 Kotlin 中對(duì)應(yīng) .value)

ps:使用@JvmField注解可以獲得和Kotlin一樣的體驗(yàn)

取代static的Companion

  • Kotlin 中沒(méi)有了 static 關(guān)鍵字,常量可以使用 伴生對(duì)象(companion object) 處理
  • 對(duì)于絕對(duì)的常量,可以使用 const 關(guān)鍵字,此時(shí)在 Java 中和在 Kotlin 中的調(diào)用方式是一樣的。const 只適用于直接初始化為一個(gè) value 的情況。
  • 沒(méi)有 const 修飾的話(huà),Java 中需要使用 getter 來(lái)獲取

[常量定義]

?

?

[Kotlin 使用]

?

?

[Java 使用]

?

ps:可以使用@JvmStatic獲得一樣的體驗(yàn)

擴(kuò)展函數(shù)和頂層函數(shù)(Any的擴(kuò)展函數(shù))

這兩個(gè)都是 Kotlin 的特性,在 Kotlin 中調(diào)用就是如絲般順滑,但是在 Java 中調(diào)用還是普通的靜態(tài)方法,類(lèi)名是所在文件名加Kt:

[函數(shù)定義]

?

?

[Kotlin 使用]

?

?

[Java 使用]

?

?

還原lambda

Kotlin 支持函數(shù)對(duì)象,可以將 lambda 作為函數(shù)的參數(shù)和返回值,這也是 Java 中沒(méi)有的特性,于是在 Java 中調(diào)用這類(lèi)方法,就會(huì)變成匿名內(nèi)部類(lèi)(類(lèi)名就叫 FunctionX, X是數(shù)字,表示參數(shù)數(shù)量):

[定義一個(gè)接收 lambda 的函數(shù)]

?

?

[Kotlin 使用]

?

[Java 使用]

?

?

invoke 方法就是 lambda 的內(nèi)容函數(shù)了,這也證明了 Kotlin 中 lambda 的實(shí)現(xiàn)方式還是定義了一個(gè)接口(我記得方法也是一個(gè)對(duì)象,應(yīng)該不是一個(gè)接口)。使用 lambda 時(shí)需要考慮額外的性能開(kāi)銷(xiāo),盡量使用 inline 優(yōu)化性能。

ps:我測(cè)試了一下,函數(shù)的最后一個(gè)泛型是返回值的類(lèi)型

總結(jié)

Java 調(diào)用 Kotlin 并不是特別常用,畢竟我相信用過(guò) Kotlin 之后,就不會(huì)想要使用 Java 了。這次情況特殊,在 Kotlin 的新項(xiàng)目中引入了一些過(guò)去的 Java Activity,真是沒(méi)有對(duì)比就沒(méi)有傷害啊。


原文鏈接:https://juejin.im/post/5adda4b35188256712782274

總結(jié)

以上是生活随笔為你收集整理的Java 调用 Kotlin的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。