0 有用部分
1 函数式编程简介
2 函数式编程和lambda的关系
3 lambda表达式应用范围
4 lambda应用的五个案例
5 函数式编程应用条件
6 提出问题
0 有用部分
4 lambda应用的五个案例
5 函数式编程应用条件
6 提出问题
本节主要介绍了lambda的使用方式,具体demo参照2-10 和2-15
1 函数式编程简介
函数式编程是一种不同的编程思想,定义函数作为公民,可以赋值给变量,作为参数或者返回值来传递
2 函数式编程和lambda的关系
为了向scala,haskell语言看齐
lambda是 java引入函数式编程的一种革命性的尝试。
3 lambda表达式应用范围
lambda可以替代面向对象方式下的所有匿名函数,通过行为参数化传递代码
4 lambda应用的四个案例
◆(parameters)->expression
◆(parameters)->{statement;}
4.1 没有参数
()->System.out.println("Hello World!");
4.2 只有一个参数
name->System.out.println(
"Hello World from"+name+"!");
4.3 没有参数,逻辑复杂
()->{ System.out.println("Hello"); System.out.println("World"); }
4.4 包含两个参数的方法
BinaryOperator<Long> functionAdd=(x,y)->x+y;
Long result=functionAdd.apply(1L,2L);
4.5 对参数显示声明
BinaryOperator<Long>functionAdd=(Long x,Longy)->x+y;
Long result=functionAdd.apply(1L,2L);
5 函数式编程应用条件
◆接口中只有一个抽象方法(必看)(一个接口中有多个方法的还是不要用了,感觉好不方便啊,如果完全面向函数式编程,需要把接口中的多个方法拆成了很多的小方法,还是两种编程方法结合着用比较好)
◆Java8的函数式接口注解:@FunctionInterface(可加可不加,只是为了校验是否符合lambda规则)
◆函数式接口的抽象方法签名:函数描述符
使用条件:(课程讲的不是很理解,外网摘抄,下边有时间看)
1.有一个接口且只有一个A方法
2.把该接口对象充当B方法参数,灵活使用A方法
3.调用B方法,使用Lambda表达式实现A方法,充当匿名对象
6 提出问题
一个接口中有多个方法的还是不要用了,感觉好不方便啊,如果完全面向函数式编程,需要把接口中的多个方法拆成了很多的小方法,还是两种编程方法结合着用比较好。
问题:如果原来一个接口A中只有一个抽象方法B,我C,D,E等多个类都用了lambda表达式,以后接口A中加了一个抽象方法F,那么引用A接口的C,D,E类是不是都要同步改造?
针对这种情况,有没有好的解决方法?