Kotlin 1.4 來了服爷!全新語言特性和更多改進(jìn)

image

發(fā)布人:開發(fā)技術(shù)推廣工程師 Wojtek Kaliciński

來自開發(fā)者社區(qū)的熱情與積極采用推動了 Kotlin 成為 Android 開發(fā)的 首選語言 (Kotlin-first)。隨著 Kotlin 不斷發(fā)展,JetBrains(Kotlin 的創(chuàng)建者)血崭、開源社區(qū)以及 Google 團(tuán)隊(duì)也將持續(xù)投入更多的資源和精力擅羞。

我們很高興與大家分享 Kotlin 1.4 版本,這將是 Kotlin 發(fā)展的下一個里程碑蝗罗,包含新的語言特性艇棕、改進(jìn)的編譯器和工具。以下是此版本中部分振奮人心的新特性的簡要概述串塑。您可以在 JetBrains 官方博客 中閱讀有關(guān) Kotlin 1.4 的更多信息欠肾。

新語言特性

Kotlin 1.4 中引入的新語言特性改善了編寫 Kotlin 代碼的 "人機(jī)工程學(xué)",例如:

Kotlin 接口的 SAM 轉(zhuǎn)換

過去拟赊,只有 Java 編程語言中定義的功能接口(即只有一個單一抽象方法 - SAM)受益于 Kotlin 中的速記語法:

executor.execute { println("This is shorthand for passing in a Runnable") }

現(xiàn)在刺桃,Kotlin 1.4 可以將 Kotlin 接口標(biāo)記為功能接口,并通過添加 fun 關(guān)鍵字讓它們以類似方式工作:

fun interface Transformer<T, U> {
   fun transform(x: T): U
}
val length = Transformer {
   x: String -> x.length
}

Kotlin 1.4 版本說明 頁面介紹了有關(guān)新語言特性的更多信息吸祟,如:混合命名和位置參數(shù)瑟慈、尾部逗號、可調(diào)用引用改進(jìn)屋匕,以及在循環(huán)中的 when 內(nèi)部使用 breakcontinue葛碧。

顯式 API 模式

另外一個新特性是 顯式 API 模式,面向 Kotlin 的庫作者过吻。

該模式強(qiáng)制執(zhí)行 Kotlin 的某些語言屬性进泼,這些屬性通常為可選,例如指定可見性修飾符纤虽,以及任何公共聲明的顯式鍵入乳绕,防止設(shè)計(jì)庫的公共 API 時(shí)出錯。官方文檔說明了如何啟用顯式 API 模式并開始使用這些附加檢查逼纸。

編譯器的改進(jìn)

上述語言特性是 Kotlin 1.4 中密切貼合開發(fā)者的一部分改動洋措,其他大部分工作是以提高 Kotlin 編譯器的整體質(zhì)量和性能為主。

現(xiàn)在杰刽,所有開發(fā)者都可以利用的優(yōu)勢之一是 更強(qiáng)大的新類型推理算法 (默認(rèn)啟用)菠发,它可以在更多用例中自動推理類型王滤,即使在復(fù)雜的場景下也支持智能轉(zhuǎn)換,幫助開發(fā)者提高工作效率滓鸠。

除了類型推斷算法雁乡,Kotlin 1.4 還為 Kotlin/JVM 和 Kotlin/JS 帶來了全新的編譯器后端(Alpha 穩(wěn)定階段,可選)糜俗,用IR 編譯器 生成代碼并用于 Kotlin/Native 后端蔗怠。

Jetpack Compose 需要 Kotlin/JVM IR 后端。Google 工程師正在與 JetBrains 合作吩跋,希望將其打造成默認(rèn)的 JVM 編譯器后端寞射。

因此,即使您當(dāng)前不使用 Jetpack Compose 進(jìn)行開發(fā)锌钮,我們同樣建議您嘗試全新 alpha 版 Kotlin/JVM 后端桥温,如果在使用中有任何問題和功能請求請?zhí)峤坏?問題跟蹤器

在 Gradle 構(gòu)建腳本中指定額外編譯器選項(xiàng)即可啟用新的 JVM IR 后端:

    kotlinOptions.useIR = true

立即體驗(yàn) Kotlin 1.4梁丘!

項(xiàng)目和 IDE 更新到 Kotlin 1.4 需要完成兩個步驟侵浸。

首先,確保您使用最新版 Android Studio氛谜,以最大限度地提高性能優(yōu)勢以及與最新 Kotlin 插件的兼容性掏觉。當(dāng)與 IDE 版本兼容的 Kotlin 1.4.0 插件可用時(shí),Android Studio 將提示您值漫,或者您也可以轉(zhuǎn)到 Preferences | Plugins 手動觸發(fā)更新澳腹。

啟用插件后,您可以更新 build.gradle 腳本中的 Kotlin Gradle 插件版本杨何,將應(yīng)用項(xiàng)目升級以使用 Kotlin 1.4酱塔。根據(jù)插件的管理方式,您必須在頂層項(xiàng)目的 buildscript 塊中更新版本:

buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.0"
    }
}

或在模塊級別的 build.gradle 文件的 plugins 塊中更改版本號:

plugins {
    id 'org.jetbrains.kotlin.android' version '1.4.0'
}

請務(wù)必仔細(xì)閱讀語言改動并更新項(xiàng)目代碼危虱,確保兼容最新版本羊娃。快來體驗(yàn) Kotlin 1.4 吧埃跷!

Java 是 Oracle 和 / 或其附屬公司的注冊商標(biāo)蕊玷。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市弥雹,隨后出現(xiàn)的幾起案子垃帅,更是在濱河造成了極大的恐慌,老刑警劉巖缅糟,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挺智,死亡現(xiàn)場離奇詭異祷愉,居然都是意外死亡窗宦,警方通過查閱死者的電腦和手機(jī)赦颇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赴涵,“玉大人媒怯,你說我怎么就攤上這事∷璐埽” “怎么了扇苞?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長寄纵。 經(jīng)常有香客問我鳖敷,道長,這世上最難降的妖魔是什么程拭? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任定踱,我火速辦了婚禮,結(jié)果婚禮上恃鞋,老公的妹妹穿的比我還像新娘崖媚。我一直安慰自己,他們只是感情好恤浪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布畅哑。 她就那樣靜靜地躺著,像睡著了一般水由。 火紅的嫁衣襯著肌膚如雪荠呐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天砂客,我揣著相機(jī)與錄音直秆,去河邊找鬼。 笑死鞭盟,一個胖子當(dāng)著我的面吹牛圾结,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播齿诉,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼筝野,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了粤剧?” 一聲冷哼從身側(cè)響起歇竟,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抵恋,沒想到半個月后焕议,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弧关,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年盅安,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了唤锉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡别瞭,死狀恐怖窿祥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蝙寨,我是刑警寧澤晒衩,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站墙歪,受9級特大地震影響听系,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜虹菲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一跛锌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧届惋,春花似錦髓帽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瘩欺,卻和暖如春必盖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背俱饿。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工歌粥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拍埠。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓失驶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親枣购。 傳聞我的和親對象是個殘疾皇子嬉探,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354