在java.util.function.Function中声明

时间:2015-06-17 11:20:00

标签: lambda java-8 java-stream

假设我有class implements java.util.function.FunctionFunction需要知道开始日期和结束日期这些将在函数的整个生命周期内保持不变。

我正在考虑为开始日期和结束日期实施Function private final个字段,因为apply方法不需要为每个调用设置新值。我觉得这会简化我的实现,但担心这违背了整个函数式编程范例。

Function方法需要值时,apply中的不可变类成员是否合理,但在Function的整个生命周期内保持不变?

1 个答案:

答案 0 :(得分:4)

你的方法没有错。

  

我觉得这会简化我的实现,但担心这与整个函数式编程范例相悖。

要解决此问题,您可以实现一个方法,该方法获取您的开始和结束日期,并返回一个函数。例如:

public static final Function<Object, Object> getDateF(final Date start, final Date end) {
  return input -> {
    // do something with start / end for your calculation
    final Object output = null;
    return output;
  };
}

将对象替换为您需要的任何内容。