java - 编写 Java 7 库代码以与 Java 8 lambda 配合使用

标签 java lambda functional-programming backwards-compatibility java-8

我正在编写需要在 Java 7 中运行和编译的库代码,因此我无法直接使用 Java 8 中的新 lambda 功能。

但是我仍然希望代码能够方便地与 Java 8 一起使用。例如:

  • 如果 Java 8 用户可以将内部类/访问者样式模式用作 Lambda,那将会很有帮助
  • 我想提供便于与 lambda 一起使用的 API

我应该采用哪些实践来确保我的库的 Java 7 和 Java 8 用户获得最佳体验?

最佳答案

Lambda 表达式基于单一方法接口(interface)。任何使用单方法接口(interface)实现的地方(例如,实现具有一种方法的接口(interface)的匿名内部类),Java 8 用户都可以改用 lambda 表达式。

看看集合类在 Java 8 中是如何被修改的;例如,添加到 IterableforEach 方法。这些方法中的每一个都将单一方法接口(interface)作为参数。

看看:

为了使您的库可供 Java 8 之前的用户使用,您可能还想提供支持旧式迭代集合的方法;不要强制这些用户使用大量匿名内部类。

关于java - 编写 Java 7 库代码以与 Java 8 lambda 配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22345508/

相关文章:

java - 如何使 charAt() 返回一个可以填充数组的数字?

java - 如何获取列表中的所有项目

javascript - 如何以无点样式编写带有 2+ 个参数的函数

scala - 如何将值用作目标函数的参数

functional-programming - Erlang 列表与元组比较

java - 带有鉴别器列的对象的 Eclipselink 延迟加载问题

java - 异常错误不会发生并且尝试...捕获不打印指定的错误消息

java - Java 8 如何推断 lambdas 参数类型

list - 迭代一个 optional 整数列表 ifPresent

java - lambda 表达式中的 Math.toIntExact?