Java基础——JDK1.8新特性之Lambda表达式

Java基础——JDK1.8新特性之Lambda表达式

一、Lambda的由来

  谈到Java的Lambda表达式,就不得不谈函数式编程,Java中要想实现函数式编程必须满足一个前提:接口必须只能有一个方法,如果存在两个及以上的方法,则无法使用函数式编程。

二、@FunctionalInterface注解

  如果现在某个接口就是为了函数式编程而生的,在定义时只能存在一个方法,因此有一个新的注解@FunctionalInterface,此注解会检查该接口中是否只存在一个抽象方法,存在两个抽象方法以上则编译报错。(该接口中有无普通/静态方法都无所谓

三、Lambda表达式的语法(括号中的方法参数与接口中定义的抽象方法的方法参数相同

  1、方法体只有一行代码时
	(方法参数) -> 具体的方法体实现
    当方法没有返回值时
		package com.xiaoaxiao.test.LambdaTest;
		
		/**
		 * Created by xiaoaxiao on 2019/7/10
		 * Description: 当Lambda表达式只有一行代码且没有返回值时
		 */
		
		interface IInterface1{
		    void test();
		}
		
		public class OneLineCode {
		
		    public static void main(String[] args) {
		        IInterface1 interface1 = ()-> System.out.println("hello world");
		        interface1.test();
		    }
		}
	
    当方法有返回值时,单行代码的lambda表达式可以省略return语句。
		package com.xiaoaxiao.test.LambdaTest;
		
		/**
		 * Created by xiaoaxiao on 2019/7/10
		 * Description: 当Lambda表达式只有一行代码并且存在返回值时
		 */
		
		interface IInterface2{
		    int test(int a,int b);
		}
		
		public class OneLineCodeReturn {
		    public static void main(String[] args) {
		        IInterface2 iInterface2 = (p1,p2)->p1+p2;
		        System.out.println(iInterface2.test(10,20));
		    }
		}
		
  2、方法体有多行代码时
			(方法参数) -> {
					…
					…
					[return 语句];
 			 };
    return语句不可省略。
		package com.xiaoaxiao.test.LambdaTest;
		
		/**
		 * Created by xiaoaxiao on 2019/7/10
		 * Description: 当Lambda表达式有多行代码时
		 */
		
		interface IInterface3{
		    int test(int a,int b);
		}
		
		public class ManyLineCode {
		
		    public static void main(String[] args) {
		        IInterface3 interface3 = (p1,p2)->{
		            int ret = p1+p2;
		            ret += 10;
		            return ret;
		        };
		
		        System.out.println(interface3.test(10,20));
		    }
		}
		
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值