您的位置:首页 > 编程语言 > Java开发

初看Java8新特性-Lambda表达式的语法规则

2017-06-21 14:03 323 查看

前言

前面只是很零碎的举了一些有关Lambda表达式的例子,没有做一个系统的语法实例,这里将给出Lambda表达式的语法规则!

语法规则

无参数,无返回值

程序实例:

//无参数 无返回值
@Test
public void test1(){
Runnable r =()-> System.out.println("无参数 无返回值");
r.run();
}


输出结果:

无参数 无返回值


有单个参数,无返回值

程序实例:

//有单个参数 无返回值
@Test
public void test2(){
Consumer<String> con=(str)->System.out.println(str);
con.accept("有单个参数 无返回值");
}


输出结果:

有单个参数 无返回值


附加说明:

//这三种写法的效果是一样的
Consumer<String> con=str ->System.out.println(str);
Consumer<String> con=(str)->System.out.println(str);//推荐使用这种
Consumer<String> con=(String str)->System.out.println(str);


有多个参数,Lambda体有多条语句,有返回值

程序实例:

//多个参数 Lambda体中有多条语句 有返回值
@Test
public void test3(){
Comparator<Integer> com=(x,y)->{
System.out.println("多个参数 Lambda体中有多条语句 有返回值");
return Integer.compare(x, y);
};
System.out.println(com.compare(2,1));
}


输出结果:

多个参数 Lambda体中有多条语句 有返回值
1


附加说明:

参数
(x,y)
里面的类型可以加上变成
(Integer x,Integer y)
,不加上JVM会自动进行类型推断!(建议不用加)

有多个参数,Lambda体有一条语句,有返回值

程序实例:

//有多个参数,Lambda体有一条语句,有返回值
@Test
public void test4(){
Comparator<Integer> com=(x,y)-> Integer.compare(x, y);
System.out.println(com.compare(2,1));
}


输出结果:

1


附加说明:

如果Lambda体中只有一条返回语句,那么对应的
{}
return
都是可以不用写的!

最后说明

很多人刚开始了解Lambda表达式会有这样的疑问:

如果一个接口有多个参数数目相同的方法,那我们的Lambda表达式又怎样选取呢?

要想解决这个疑问,我们要引入一个概念 函数式接口

什么是函数式接口?

简单来说就
da07
是该接口只有一个抽象方法!

而Lambda表达式支持的接口都是函数式接口!所以,就不存在一个接口中有多个抽象方法了!

注:可以使用
@FunctionInterface
注解来修饰函数式接口,这样当这个接口有超过一个抽象方法的时候程序就会报错了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: