关闭

lambda表达式基础

标签: lambdajava技术博客设计
21人阅读 评论(0) 收藏 举报
分类:

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

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


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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:22次
    • 积分:10
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档
    阅读排行
    评论排行