lambda表达式基础

元旦节即将结束,又是新的一年,将要学习新的技术,寻找新的人生。

博客之路从今天开始,愿明天来得更快些!


Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁。本文将以3W的原则介绍Lambda表达式

一、What?

    1、来历简介

"Lambda  表达式 "(lambda expression) 是一个匿名函数, Lambda 表达式基于数学中的 λ 演算得名,其是一个匿名函数,即没有函数名的函数 所以试着使用匿名函数的方式来理解,    Lambda 表达式在Java中的实现,有两个重要结构:( 1)、 Lambda表达式本身;(2)、函数接口。

     2、语法体系

lambda表达式包括三个部分:参数、Lambda操作符、方法体;

    (1)、参数(parameters):小括号(“()”)括起来的部分,可以包含一个或者多个,可以一个也没有,但小括号不可省略;

    (2)、Lambda操作符:也叫箭头操作符( ->);

    (3)、方法体:可以是表达式和代码块,方法体函数式接口里面方法的实现,如果是代码块,则必须用 {} 来包裹起来,且需要一个 return  返回值,但有个例外,若
函数式接口里面方法返回值是 void ,则无需 {},结构如下:

(params) -> { statements } //有参代码块
() -> { statements } //有参代码块
(params) -> expression //有参表达式
() -> expression //无参表达式

二、Why?

1、更加紧凑的代码,使用Lambda可以有效控制代码量,加快工作效率

2、更好地支持多核处理 ,我们可以很方便地并行操作大集合,充分发挥多核CPU的潜能;

3、学习RxJava的基础,因为RxJava的操作符等方面会大量用到Lambda表达式。

三、How?

1、如何在代码中使用:

Android Studio默认使用Lambda表达式是会报错的,即使你使用的是Java8,为了在android studio中使用lambda表达式,我们必须借助一个插件retrolambda,该插件将Java 8中的lambda表达式特性兼容到java 5。使用它也很简单。

(1)、安装JDK1.8以上版本




(2)、在项目(Project)的Gradle文件中的dependencies节点下添加以下代码:

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

(3)、在模块(Module) 的Gradle文件中添加以下代码,使用插件

apply plugin: 'me.tatarka.retrolambda'

(4)在模块(Module)的Gradle文件中的Android节点下添加代码:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

(5)在项目中使用

package com.lizihanglove.rxandroid;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        Button button = (Button) findViewById(R.id.btn_test);
        button.setOnClickListener((View view) -> Log.i("MainActivity","lambda")
        );
    }
}

(6)运行结果

01-03 01:14:42.533 11508-11508/com.lizihanglove.rxandroid I/MainActivity: lambda!

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值