越简单,越容易理解,这里只是做一个简单的入门讲解,抛砖引玉。
一、函数式编程的含义
个人理解:函数式编程,就是在定义好输入输出的基础上,将处理逻辑当成参数传递给方法。
在java8以前,实现函数式编程靠的的匿名内部类,java8添加了lambda表达式,极大的简化了代码。这里并不详述lambda表达式。
二、直接举例
1、首先定义一个接口——抽象方法才需要处理逻辑。
interface OneInterface{ int apple(int x,int y); }
在这个接口里,定义了一个方法,输入输出类型已经固定。在没有实现他之前,任何合理的处理逻辑都满足他。但是如果使用实现类的方式实现它,那么每种逻辑都需要一个方法。
2、使用匿名内部类——把处理逻辑实现
@Test public void test01(){ //添加处理逻辑 OneInterface oneInter = new OneInterface() { @Override public int apple(int x, int y) { int z = x + y; return z; } }; //调用实现 int result = oneInter.apple(2,3); System.out.println(result); }
在新建对象时,把逻辑当成参数传递。
输出:
5
Process finished with exit code 0
3、使用lambda的写法
@Test public void test02(){ //添加处理逻辑 OneInterface oneInter = (x,y) -> x*y; //调用实现 int result = oneInter.apple(2,3); System.out.println(result); }
可以看到,lambda表达式极大地简化了代码。
输出:
6
Process finished with exit code 0
但是上述的两种方式,显然不是一个接口的规范用法,下面的重构一下代码。
4、添加一个调用方法——规范的使用接口
定义一个方法先:
public void oneMethod(OneInterface oneInterface){ int result = oneInterface.apple(2,3); System.out.println(result); }
这个方法,调用了这个接口,并且并不知道到接口实现。
使用方法:
@Test public void test03(){ //匿名内部类方式 oneMethod(new OneInterface() { @Override public int apple(int x, int y) { return x+y; } }); //lambda表达式方式 oneMethod((x,y) -> x*y); }
输出:
5
6
Process finished with exit code 0
以上就是函数式编程的一个很简单很简单的例子。