谈论Java lamda和oop

时间:2018-10-11 10:41:00

标签: java lambda

我们知道Java是一种OOP语言,从Java 8开始,我们可以使用Lambda。但是我有一些问题,希望有人能给我一些建议。

  1. 动作和方法有什么区别?
  2. Lambda定义了一个动作,它似乎违反了OOP。我们曾经在对象中编写方法来定义其动作。然后,通过关键字new获得该对象的实例。该实例具有其字段和方法,因此它成为主题和角色。但是Lambda只是破坏了这种结构。 我想知道如何在项目中正确使用Lambda。

1 个答案:

答案 0 :(得分:0)

Java是一种OOP语言,但是在过去的几年中,Java与许多其他重要语言一样都试图成为更多 FP(例如C ++,并且所有FP支持最近被添加到其中)。

函数式编程的一个核心要素:higher order functions。您可以自行定义“执行某些操作的代码”,然后进行传递。

因此,是的,从严格的OOP角度来看,lambda和闭包看起来很尴尬。但是Java在这里只是遵循特定趋势。

现在,个人观点是:Java这样做是为了保持相关性。 OOP概念是“发明”的,可以解决一组非常具体的问题,并且可以使用FP范例以更好/更优雅的方式表达/解决其他许多问题。