巴中市万纵网络科技有限公司
首页 | 联系方式 | 加入收藏 | 设为首页 | 手机站

产品目录

联系方式

联系人:业务部
电话: 00126-83979
邮箱:service@q235cwfgg.com

当前位置:首页 >> 新闻中心 >> 正文

Android使用Lambda表达式

字号:
摘要:Android使用Lambda表达式

lambda是在jdk1.8之后引入的,所以说lambda怎么支持jdk1.8之前的jdk版本呢,还是之前的套路提供了插件的形式(retrolambda)

在android-studio中配置retrolambda插件的步骤:

在build.gradle(project)中配置如下:


classpath 'me.tatarka:gradle-retrolambda:3.2.5'

在build.gradle(module)中配置如下:


<pre name="code" class="html">apply plugin: 'me.tatarka.retrolambda'
compileOptions{
 sourceCompatibility org.gradle.api.JavaVersion.VERSION_1_8
 targetCompatibility org.gradle.api.JavaVersion.VERSION_1_8
 }
到此lambda表达式的retrolambda插件引入完成


没有使用lambda表达式

Observable.from(Arrays.asList(1,2,3,4,5))
 .filter(new Func1<Integer, Boolean>() {
 @Override
 public Boolean call(Integer integer) {
 return integer%2==0;
 }
 })
 .map(new Func1<Integer, Integer>() {
 @Override
 public Integer call(Integer integer) {
 return integer*integer;
 }
 })
 .subscribe(new Action1<Integer>() {
 @Override
 public void call(Integer integer) {
 textView.setText(integer + "");
 }
 });

使用lambda表达式
Observable.from(Arrays.asList(1,2,3,4,5))
 .filter(integer -> integer%2==0)
 .map(integer -> integer*integer)
 .subscribeOn(Schedulers.io())
 .observeOn(AndroidSchedulers.mainThread())
 .subscribe(integer -> textView.setText(integer + ""));

使用lambda表达式之后,代码变得非常简洁,正因为lambda使代码简洁的同时降低了代码的可读性(这个看你对rxjava使用熟悉的程度,初学者不建议使用lambda表达式,这样会忽略很多细节的问题)

retrolambda是jdk6/7对lambda表达式非官方兼容的方案,向后兼容性和稳定性是无法保障,因此使用retrolambda有一定的风险