我以前写过有关功能接口及其用法的文章。 如果您正在探索要成为Java 8一部分的API,尤其是那些支持lambda表达式的API,您会发现很少的接口,例如Function,Supplier,Consumer,Predicate和其他接口,它们都是java.util.function软件包的一部分。广泛使用。 这些接口具有一种抽象方法,该方法被定义的lambda表达式覆盖。 在这篇文章中,我将选择Function接口来简要解释它,它是java.util.function包中存在的接口之一。

功能接口有两种方法:

  • R apply(T t) –计算将函数应用于输入参数的结果
  • 默认‹V›函数‹T,V› –与另一个函数结合,返回执行两个函数的函数。

在这篇文章中,我想写一下apply方法,创建接受这些接口和参数的API,然后调用它们的相应方法。 我们还将研究API的调用者如何传递lambda表达式来代替接口的实现。 除了传递lambda表达式外,API的用户还可以传递方法引用,而我还没有写过方法引用。

函数接口用于需要将一些代码封装到一个方法中的方法,该方法接受某个值作为输入参数,然后在对输入执行所需的操作后返回另一个值。 方法的输入参数类型和返回类型可以相同或不同。

让我们看一下接受Function接口实现的API:

public class FunctionDemo {//API which accepts an implementation of //Function interfacestatic void modifyTheValue(int valueToBeOperated, Function<Integer, Integer> function){int newValue = function.apply(valueToBeOperated);/** Do some operations using the new value.*/System.out.println(newValue);}
}

现在让我们看一下调用此API的代码:

public static void main(String[] args) {int incr = 20;int myNumber = 10;modifyTheValue(myNumber, val-> val + incr);myNumber = 15;modifyTheValue(myNumber, val-> val * 10);modifyTheValue(myNumber, val-> val - 100);modifyTheValue(myNumber, val-> "somestring".length() + val - 100);
}

您可以看到正在创建的lambda表达式接受一个参数并返回一些值。

我将很快更新使用此Function接口作为参数的各种API。 同时,完整的代码是:

public class FunctionDemo {public static void main(String[] args) {int incr = 20;int myNumber = 10;modifyTheValue(myNumber, val-> val + incr);myNumber = 15;modifyTheValue(myNumber, val-> val * 10);modifyTheValue(myNumber, val-> val - 100);modifyTheValue(myNumber, val-> "somestring".length() + val - 100);}//API which accepts an implementation of //Function interfacestatic void modifyTheValue(int valueToBeOperated, Function<Integer, Integer> function){int newValue = function.apply(valueToBeOperated);/** Do some operations using the new value.*/System.out.println(newValue);}}

输出为:

30
150
-85
-75

注意:上面的代码是使用从此处下载的JDK和Netbeans 8 nightly builds编译的 。

参考: 函数接口– Java 8中java.util.function包中的函数接口,来自JCG合作伙伴 Mohamed Sanaulla,来自Experiences Unlimited博客。

翻译自: https://www.javacodegeeks.com/2013/04/function-interface-a-functional-interface-in-the-java-util-function-package-in-java-8.html

函数接口– Java 8中java.util.function包中的函数接口相关推荐

  1. java.util接口_函数接口– Java 8中java.util.function包中的函数接口

    java.util接口 我以前写过有关功能接口及其用法的文章. 如果您正在探索要成为Java 8一部分的API,尤其是那些支持lambda表达式的API,您会发现很少的接口,例如Function,Su ...

  2. java.util接口_Java 8中java.util.function包中的谓词和使用者接口

    java.util接口 在上一篇文章中,我写了关于Function接口的内容 ,它是java.util.package的一部分. 我还提到了Predicate接口,它是同一包的一部分,在这篇文章中,我 ...

  3. Java 8中java.util.function包中的谓词和使用者接口

    在我以前的文章中,我写了关于Function接口的内容 ,它是java.util.package的一部分. 我还提到了Predicate接口,它是同一包的一部分,在这篇文章中,我将向您展示如何使用Pr ...

  4. Function接口 – Java8中java.util.function包下的函数式接口

    作者:   Mohamed Sanaulla  译者: 李璟(jlee381344197@gmail.com) 早先我写了一篇<函数式接口>,探讨了Java8中函数式接口的用法.如果你正在 ...

  5. 深入学习Java8 Lambda (default method, lambda, function reference, java.util.function 包)

    Java 8 Lambda .MethodReference.function包 多年前,学校讲述C#时,就已经知道有Lambda,也惊喜于它的方便,将函数式编程方式和面向对象式编程基于一身.此外在使 ...

  6. java.util.function包

    目录 Supplier 参数个数扩展 参数类型扩展 特殊变形 Function,r> 参数个数扩展 参数类型扩展 特殊变形 Consumer 参数个数扩展 参数类型扩展 特殊变形 Predica ...

  7. Eclipse中要导出jar包中引用了第三方jar包怎么办

    Eclipse中要导出jar包中引用了第三方jar包怎么办 (2009-07-20 15:28:44) 转载▼ 标签: it 分类: Eclipse     今天做个小的java程序,想要先将其导出成 ...

  8. R语言使用haven包的read_spss函数读取spss格式数据、使用haven包的read_sas函数读取SAS格式数据、使用haven包的read_dta函数读取Stata格式数据

    R语言使用haven包的read_spss函数读取spss格式数据.使用haven包的read_sas函数读取SAS格式数据.使用haven包的read_dta函数读取Stata格式数据 目录

  9. java 扫描类_Java扫描指定包中所有类

    1. 扫描类 import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.n ...

最新文章

  1. 论坛报名 | 从捉迷藏、星际争霸到新一代人工智能:多智能体深度强化学习的理论与实践...
  2. js(Dom+Bom)第二天(1)
  3. [css] 如何取消页面中选中的文字?
  4. Linux下快速搭建DNS服务器
  5. 20155234 2016-2017-2 《Java程序设计》第5周学习总结
  6. IDC:中小企业IT产品及服务支出预计到2020年突破6680亿美元
  7. mysql oracle优缺点_oracle 的优缺点
  8. android高德地图选取坐标点,【API】高德地图API JS实现获取坐标和回显点标记(示例代码)...
  9. 初级程序员考试大纲 (转)
  10. HTML5系列代码:信纸效果
  11. 计算机能换显卡吗,一体机电脑可以更换CPU和显卡嘛?
  12. matlab误差分析,数值分析之MATLAB实验一误差分析
  13. 僵尸进程和孤儿进程-(转自Anker's Blog)
  14. Smart200控制两台V90伺服,绝对定位和速度控制
  15. 家用智能洗地机哪个牌子好、这几款旗舰机好用又实惠
  16. 06-软件测试计划及测试说明
  17. 风机永磁同步发电机模型
  18. wyse瘦客户机装系统_Wyse 瘦客户机流程更新
  19. 抖音情感类账号怎么做,抖音情感类分为几种?
  20. 项目管理的要素、形式及方法

热门文章

  1. 满足其中一个条件则可_农村分户好处多,但并非人人都可分户!满足这4个条件才可以申请...
  2. 转:springboot servlet使用配置
  3. jdbc查询序列_JDBC –模拟序列
  4. java \t怎么从头开始_如何从头开始以正确的面向对象方式创建Java Web Framework
  5. gwt格式_GWT HTTP请求替代方案
  6. cuba.platform_CUBA Platform 6.3的新增功能
  7. 枚举对象注释_如何以及何时使用枚举和注释
  8. Kogito,ergo规则:从知识到服务,轻松自如
  9. 使用ElasticSearch进行近实时索引
  10. 在ADF 12.2.1.3中使用基于JSON的REST Web服务