您的位置:首页 > 编程语言

函数式编程

2016-05-25 20:56 260 查看
使用Function接口

函数式编程强调使用函数,以实现其目标与不断变化的状态。这与大多数开发者熟悉的改变状态的编程方式形成对比。Function接口让我们在java代码当中引入函数式编程成为可能。

Function接口当中只有2个方法:
public interface Function<F,T> {
  T apply(F input);
  boolean equals(Object object);
}


我们不会具体的使用equals方法来判断A对象与B对象是否相等,只会调用apply方法来比较A对象与B对象是否相等。apply方法接受一个参数并且返回一个对象。一个好的功能实现应该没有副作用,这意味着当一个对象传入到apply方法当中后应该是保持不变的。下面是一个接受Date对象并且返回Date格式化后字符串的例子:
public class DateFormatFunction implements Function<Date,String> {
  @Override
  public String apply(Date input) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy");
    return dateFormat.format(input);
  }
}


在这个例子当中,我们可以清楚看到Date对象正在通过SimpleDateFormat类转换成我们期望格式的字符串。虽然这个例子可能过于简单,但是它演示了Function接口的作用,转换一个对象并且隐藏了实现的细节。通过这个例子我们可以使用实现了Function接口的类,我们也可以使用匿名类来实现。看看下面的例子:
Function<Date,String> function = new Function<Date, String>() {
  @Override
  public String apply( Date input) {
    return new SimpleDateFormat("dd/mm/yyyy").format(input);
  }
};


这2个例子没什么不同。一个是简单的实现了Function接口,另一个是匿名类。实现了Function接口的类的优点是,你可以使用依赖注入来传递一个函数接口到一个协作的类中,使得代码高内聚。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: