lambda表达式的应用
首先我们要理解lambda表达式的实质——一个可传递的代码块。
在引入lambda表达式之前,我们在Java中是无法将一个代码块赋给一个变量
我们可以将一个lambda表达式赋给一个函数式接口(即只有一个抽象方法的接口)、
如:
interface Com
{
int compare(int a , int b);
}
Com 接口中有一个抽象方法。我们可以创建Com变量。并用一个
x = (int a, int b)->{
if(a>b) return 1;
else return 0;
};
这样compare方法就由一个lambda表达式实现了。
即此时对于x对象引用的compare方法实际上为
int compare(int a,int b)
{
if(a>b)return 1;
else return 0;
}
我们直接用一个例子说明:
public class test {
public static void main(String []args)
{
test.talk(()->System.out.println("欢迎看我的博客"));
}
public static void talk(A c)
{
c.say();
}
}
interface A
{
void say();
}
运行结果为
可以看到,我们的talk方法有一个类型为A的参数,由于A接口只有一个方法,所以这是一个函数式接口。我们可以将一个lambda表达式赋给这个接口。我们可以看见这个的效果,当我们运行talk方法时,它将调用c.say。lambda表达式的作用就显现出来了——lambda表达式将say方法实现了。
我们再来看一个例子:
public class test {
public static void main(String []args)
{
talk(()->System.out.println("欢迎看我的博客"));
write((int c)-> System.out.println(c));
}
public static void talk(A c)
{
c.say();
}
public static void write(B c)
{
for(int i = 1 ; i < 10 ; i++)
c.writedowm(i);
}
}
interface A
{
void say();
}
interface B
{
void writedowm(int value);
}
结果是:
我们可以看见每一次调用writedowm方法实际上执行的就是lambda表达式中的代码。
Java语言引入lambda表达式的一个优点就是:可以对代码进行处理。