从品牌网站建设到网络营销策划,从策略到执行的一站式服务
摘要: 今天早上,Google 发布了 AS 3.0,以及一系列的 Support 包,有意思的新东西挺多,因为之前一直在看 kotlin的支持,特地翻了一下对 Java8 的支持方式,结果……
本文开源实验室原创,转载请以链接注明:https://kymjs.com/code/2017/10/26/01/
支持 Java 8
kotlin 相关的东西很早以前我就在讲了,这里就不再细说了。AS3里面有一个亮眼的特性就是支持J8。首先说一下为什么以前我们不能用Java8的新特性,最主要的原因就是 lambda 语法。在 JVM 中,Java8 的语法是通过一个叫做invokedynamic的字节码操作命令完成的,但是这东西在 dalvik 中并没有,因此一直不能用。
现在AS3.0之所以能用,实际上是在新的Android Studio中加入了一个desugar的东西,他就类似JVM上的invokedynamic,把Java8的字节码翻译成dalvik可识别的。
官网介绍:
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 执行后,desugar 会对 class 做操作,将内部的lambda相关的语法转换为dalvik可识别的语法。
说的太抽象具体表现我们看代码。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new Thread(() -> { Log.d("kymjs", "========"); }).start(); }
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图