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

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

功能接口有两种方法:

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

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

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

public class FunctionDemo {

   //API which accepts an implementation of 
   //Function interface
  static 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 interface
  static 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值