这几天正在学关于Java lambda表达式,在这里就自己学习的一点心得体会写一上,就当我的读书笔记吧。
函数式编程在我的初步理解来看,就是相当于JavaScript中的Function类型。就是可以把方法当成参数进行传递。
lambda表达式有两个重要的结构:一、lambda表达式自身。二、函数式接口。
lambda表达式本质上就是匿名方法,主要用于为函数式接口所定义的方法提供一个实现。也就是为lambda表达式会提供一个匿类,因为些lambda有时候也会被称为闭包。
函数式接口,是指只提供有一个抽象方法定义的接口。在Java8之前接口中的方法是不提供方法实现的,但是在Java8中接口中的方法是可以提供默认实现的。所以函数式接口,在Java8之中的定义是:“只提供有一个没有默认实现的抽象方法的接口”。
一、lambda表达式的使用。
下面举一个例子:
//函数式接口 public interface Abc{ public double getValue(); } Abc abc = ()->123.0;
当调用abc.getValue();函数接返回123.0。
需要重点指出的是,lambda表达式在参数类型和数量、返回类型以及发生的异常都需要被函数式接口的方法所接受。
当需要为lambda表达式指定参数时,
(int n)->123.0*n;
当然参数类型是可以不写的,这个可以通过函数式接口中定义的方法参数推断。当lambda表达式参数只有一个时括号是可以省略的。
n->123.0*n;
这部分还有最后一点是,如果lambda表达式有两个参数时参数类型。如果省略都省略,不然都要写上。
(n,b)->123.0*n*b; (int n,int b)->123.0*n*b;
但是这样写是错的:
(int n,b)->123.0*n*b;
先写这些,剩下的等我看完书在写。^_^