J-IM

一起来学Java8(二)——Lambda表达式

与世无争的帅哥 提交于 2019-11-30 04:40:58
Lambda简介 什么是Lambda表达式,简单的说是一种匿名函数表达方式。因此Lambda表达式本质是个函数,只不过没有函数名称。 Lambda表达式具有以下特点: 匿名,它没有函数名称 本质是个函数,除了函数名,它有参数列表、函数内容(方法体)、返回类型 简洁,有时候可以省略参数的类型 可传递,Lambda表达式可以当做一个变量进行存储 Lambda的基本语法是: (参数列表) -> 表达式 或 (参数列表) -> { 表达式; } 哪里可以使用Lambda 有函数式接口的地方就可以使用Lambda表达式。 函数式接口的定义: 一个接口里面只有一个抽象方法。 拿Runnable接口来说,它是一个函数式接口,Runnable用法如下代码所示: Thread thread = new Thread(new Runnable() { @Override public void run() { System.out.println("run..."); } }); thread.start(); Thread.sleep(100); 由于Runnable是个函数式接口,因此可以使用Lambda表示替换,替换后如下: // 方式2 Thread thread2 = new Thread(() -> System.out.println("run2...")); thread2.start

一起来学Java8(一)——函数式编程

孤街醉人 提交于 2019-11-27 19:20:57
在这篇文章中,我们将了解到在Java8下如何进行函数式编程。 函数式编程 所谓的函数式编程就是把函数名字当做值进行传递,然后接收方拿到这个函数名进行调用。 首先来看下JavaScript如何进行函数调用 var Person = { sayHello: function(name) { alert('hello ' + name); } }; function work(fn) { fn('Jim'); } work(Person.sayHello); // hello Jim 在这个例子中, sayHello 函数被当做一个参数传递到另一个 work 函数当中,然后work调用给定的函数。 Java8中的函数式编程 在Java中,充当函数的角色是类中方法,在本篇文章当中提到的函数泛指方法。 接下来看下Java8中一个简单的函数式编程例子: import java.util.function.Consumer; class Person { public static void sayHello(String name) { System.out.println("hello " + name); } } public class TestPerson { public static void main(String[] args) { work(Person::sayHello)