一个简单的Java Function接口示例:快速学习函数式编程

如果您想掌握函数式编程,最好的起点是Java Function接口。 本示例将向您展示四种在代码中实现此功能接口的方法-从如何使用实际类以及如何使用lambda函数创建非常简洁的代码开始。

Java Function接口非常简单。 它使用单个Java对象作为参数,并在方法结束时返回单个Java对象。 您可以想到的任何方法都需要一个对象并返回一个满足Java Function约定的对象。

如何使用Java的Function接口

对于此Java Function接口示例,我们将提供一个名为“ apply”的方法,该方法将Integer作为参数,对其进行平方并以String的形式返回结果。 在开始之前,让我们快速看一下java.util.function.Function的官方JavaDoc:

java.util.function.Function
Java Interface Function<T,R>

Parameter Types:
T - the input given to the function
R - the result running the function

Popular Subinterface of Function: UnaryOperator<T>

JavaDoc还指示Function接口有一个名为apply的非默认方法,该方法接受一个参数并返回一个参数:

R apply(T t)

人们经常会误认为java.util.functions包中定义的接口有些神奇,但事实并非如此。 它们只是普通的接口,因此,我们总是可以创建一个显式实现它们的类。

class FunctionClass implements Function<Integer, String> {
  public String apply(Integer t) {
    return Integer. toString (t*t);
  }
}

此处定义的FunctionClass实现Function并提供apply方法的实现。 然后,我们可以在具有标准语法规则的任何类中使用它。

Function<Integer, String> functionClass =new FunctionClass();
System. out .println(functionClass.apply(2));

当您运行上面的代码时,输​​出将为4.

Java函数接口示例

类似地,我们可以编写一个Java函数示例,该示例使用一个内部类来实现apply方法:

Function<Integer, String> innerClass =new Function<Integer, String>(){
  public String apply(Integer t) {
    return Integer. toString (t*t);
  }
};
System. out .println(innerClass.apply(3));

当您运行内部类示例时,输出将为9.

Java的Function和lambda表达式示例

当然,功能接口的整体思想是将lambda表达式合并到混合中。 这是用相当冗长的lambda表达式实现的Java Function示例:

Function<Integer, String> verboseLambda = (Integer x)-> {return Integer. toString (x*x); };
System. out .println(verboseLambda.apply(5));

此实现将打印出值25.当然,此实现也很罗word。 使用Java lambda表达式时 ,不需要在左侧使用对象类型,并且如果lambda表达式为一行,则括号和return关键字都可以省略。 因此,实现此Java Function接口的更简洁的lambda表达式如下所示:

Function<Integer, String> conciseLambda = (Integer x)-> {return Integer. toString (x*x); };
System. out .println(conciseLambda.apply(5));

当代码通过运行简洁的lambda表达式实现Java Function时,程序将输出25.

这就是您真正需要了解的有关java.util.function.Function接口的全部信息。 这是一个非常简单的组件,只需要实现一个方法(称为apply)的实现,该方法就传递到单个对象中,运行到完成并返回另一个Java对象。 就这么简单。

不要使Java的Function接口过于复杂

有些人会发现Java Function接口的简单性有些令人困惑。 毕竟,采用某种方法并返回其他方法的方法似乎是如此的模糊和抽象,几乎没有意义。

但是,经验丰富的Java开发人员知道,有时最简单的语言构造可能会变得最强大,就像使用抽象类和接口设计的对象模型一样。 当涉及到java.util.function包中列出的各种组件时,通过简单性提供强大的支持就非常重要。

Java函数示例

Java Function接口在java.util.function API包的许多部分中使用

您将在很多地方遇到Function接口,尤其是当您使用Java Streams API开始高级功能编程时。 强大的方法,例如map ,reduce和flatMap都将Java Function作为参数。 因此,如果您计划使用Java进行任何map-reduce编程,Functions将成为您最大的朋友之一。

翻译自: https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/Get-the-most-from-Java-Function-interface-with-this-example

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值