在java.util.function.Function中声明

Rob*_*ain 6 lambda java-8 java-stream

假设我有class哪些implements java.util.function.Function.在Function需要了解的开始日期和结束日期,但这些将是整个函数的生存期内保持不变.

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

Functionapply方法需要值但在整个生命周期内保持不变的情况下,使用不可变类成员是否合理 Function

Mar*_*ler 5

你的方法没有任何问题。

我觉得这会简化我的实现,但担心这违背了整个函数式编程范式。

为了解决这个问题,你可以实现一个方法,它获取你的开始和结束日期,并返回一个函数。例如:

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;
  };
}
Run Code Online (Sandbox Code Playgroud)

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

  • 我想补充一点,在运行时,这将评估为实现 `Function` 的对象,该对象将有两个字段用于 `start` 和 `end`,就像在 Roberts 建议中一样。这只是更短和更漂亮。 (2认同)