摘要: 今天早上,Google 發(fā)布了 AS 3.0,以及一系列的 Support 包,有意思的新東西挺多,因為之前一直在看 kotlin的支持,特地翻了一下對 Java8 的支持方式,結(jié)果……
本文開源實驗室原創(chuàng),轉(zhuǎn)載請以鏈接注明:https://kymjs.com/code/2017/10/26/01/
支持 Java 8
kotlin 相關(guān)的東西很早以前我就在講了,這里就不再細(xì)說了。AS3里面有一個亮眼的特性就是支持J8。首先說一下為什么以前我們不能用Java8的新特性,最主要的原因就是 lambda 語法。在 JVM 中,Java8 的語法是通過一個叫做invokedynamic的字節(jié)碼操作命令完成的,但是這東西在 dalvik 中并沒有,因此一直不能用。
現(xiàn)在AS3.0之所以能用,實際上是在新的Android Studio中加入了一個desugar的東西,他就類似JVM上的invokedynamic,把Java8的字節(jié)碼翻譯成dalvik可識別的。
官網(wǎng)介紹:
Android Studio provides built-in support for using certain Java 8 language features and third-party libraries that use them. As shown in figure 1, the default toolchain implements the new language features by performing bytecode transformations, called desugar, on the output of the javac compiler.
desugar 能干啥
首先看張官方圖:
在 javac 執(zhí)行后,desugar 會對 class 做操作,將內(nèi)部的lambda相關(guān)的語法轉(zhuǎn)換為dalvik可識別的語法。
說的太抽象具體表現(xiàn)我們看代碼。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new Thread(() -> { Log.d("kymjs", "========"); }).start(); }
網(wǎng)站名稱:AndroidStudio3支持Java8了請問你敢用嗎-創(chuàng)新互聯(lián)
標(biāo)題來源:http://chinadenli.net/article44/dhpche.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、定制網(wǎng)站、網(wǎng)站收錄、響應(yīng)式網(wǎng)站、虛擬主機、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容