Java基础:函数式编程的函数的本质

Java基础:函数式编程的函数的本质

今天聊聊Java的函数式编程。

1 在Java中函数的本质是什么

咱们都知道,Java中函数式编程主要形式有2种:1. 通过一个函数来定义一个类对象;2. 给方法中传递函数作为参数,然后在方法体中执行传递进去的函数
我发现在Java中,函数本质上其实就是类对象,只不过它构建的类是匿名类,这也符合了OOP的 一切皆对象 的理念。只不过这个对象的形成比较特殊,是通过Java8开始才出现的特殊语法(比如方法引用、lambda表达式)构建的。

  1. 其中,通过一个函数定义一个类对象,其实就是使用该函数的行为实现函数式接口的抽象方法,从而构建了一个匿名内部类,然后编译器会在编译时处理,生成一个该匿名类的对象,赋值给该函数式接口类型的变量。

  2. 然后,给方法中传递函数作为参数,然后在方法体中执行传递进去的函数,其实传递进去的函数,也是实现了某个函数式接口的抽象方法,构建了一个匿名内部类,然后又构建了该类的一个对象(所以实际上方法接收的参数就是一个对象)。然后在方法内部,调用了该对象的方法。函数式编程就是通过这种方式,将一段代码(即一个行为)作为参数传递给了方法,让程序可以在运行时动态地选择运行哪段代码(即行为)。

2 函数式接口

函数式接口中的默认(default)方法comppose(), andThen(), and(), or(), negate() 等,可以和其抽象方法构成 函数组合。结合上面的内容,其实函数式接口的所有方法的参数类型和返回类型都是一个函数,也就是一个对象。

3 函数式编程语言

其实Java不能说是一门纯粹的函数式编程语言,只能说是具备了函数式编程语言的特点,并且也是抄了其他纯函数式编程语言(如Scala和Kotlin)的理念和特性。

posted @ 2022-03-13 11:11  mediocrep  阅读(165)  评论(0编辑  收藏  举报
既然选择了远方,便只顾风雨兼程!