关于函数式编程

2018-12-06  本文已影响80人  叩丁狼教育

本文作者:杨龙,叩丁狼高级讲师。原创文章,转载请注明出处。

为什么要有函数式编程及定义

为什么

定义

函数式编程,就是把一个函数可以作为实参数传递给另一个函数使用。Java8 使用 Lambda 表达式实现函数式编程,一种紧凑的、传递行为的方式。

HelloWorld

button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent event) {
        System.out.println("button clicked");
    }
});

button.addActionListener(event -> System.out.println("button clicked"));

Lambda

术语说明

button.addActionListener(event -> System.out.println("button clicked"));
// Lambda 表达式的参数个数一个 event,类型为 ActionEvent
// Lambda 表达式的返回类型是 void
// Lambda 表达式的主体是 System.out.println("button clicked")
// Lambda 表达式的目标类型为 ActionListener

String name = getUserName();
button.addActionListener(event -> System.out.println("hi " + name)); // 编译不报错,因为程序隐式地给 name 加了 final 修饰,你也可以手动显示加上

String name = getUserName();
name = formatUserName(name);
button.addActionListener(event -> System.out.println("hi " + name)); // 编译报错,name 是变量

函数接口

定义

函数接口是只有一个抽象方法的接口,用作 Lambda 表达式的类型。

// 下面就是一个函数接口
public interface ActionListener extends EventListener {
    public void actionPerformed(ActionEvent event);
}

[图片上传失败...(image-ab5edc-1544061106908)]
指向函数接口的箭头表示参数,若箭头从函数接口射出,则表示方法的返回类型。上图表示 ActionListener 接口,接受一个 ActionEvent 对象,返回空。

Java 中重要的函数接口

接口 参数 返回类型
Predicate<T> T boolean
Consumer<T> T void
Function<T,R> T R
Supplier<T> None T
UnaryOperator<T> T T
BinaryOperator<T> (T, T) T

想获取更多技术干货,请前往叩丁狼官网:http://www.wolfcode.cn/all_article.html

上一篇下一篇

猜你喜欢

热点阅读