Android使用Lambda表达式 - 巴中市万纵网络科技有限公司-新闻中心
雷竞技推荐码raybet网投雷竞技平台风控有限公司
首页 | 联系方式 | 加入收藏 | 设为首页 | 手机站
  • 网站首页
  • 公司简介
  • 产品展示
  • 新闻中心
  • 常见问题
  • 联系我们
  • 产品目录

    联系方式

    联系人:业务部
    电话: 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有一定的风险