java - 谈谈java lambda和oop

标签 java lambda

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

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

最佳答案

Java 是一种 OOP 语言,但在过去的几年里,Java 与许多其他重要语言一样,试图变得更多 FP (例如 C++,以及最近添加的所有 FP 支持)。

函数式编程的一个核心要素:higher order functions 。 “做某事的代码”变成了你可以自己定义并传递的东西。

所以,是的,从严格的 OOP 意义上来说,lambda 和闭包看起来很尴尬。但 Java 在这里只是追随特定的趋势。

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

关于java - 谈谈java lambda和oop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52758035/

相关文章:

java - 如何将一个对象的两个字段收集到同一个列表中?

java - 如何将给定的字符串格式解析为 dd-MMM-yyyy hh :mm:ss:aa?

java - 如何根据 JsonArray 中的键值过滤列表

java - Maven 依赖插件试图加载不存在的类 'org.apache.maven.plugin.dependency.fromConfiguration.Artifact'

Java:暂停线程并获取文件中的位置

java - Java中高效实用的flood fill算法?

c++ - 正 lambda : '+[]{}' - What sorcery is this?

java - Kotlin 中的 Lambda 表达式

recursion - The Little Schemer Evens-only*&co

php - 无法破坏事件的 lambda 函数