Java 8 引入了函数接口(Function Interface)来在Java中实现函数式编程。它表示一个只有一个参数并且返回结果的函数。虽然易于实践和阅读,但我仍在尝试理解它的好处,除了使其看起来很酷之外。例如,
Function<Integer, Double> half = a -> a / 2.0;
Function<Double, Double> triple = b -> b * 3;
double result = half.andThen(triple).apply(8);
可以被转换成像标准方法一样的方式。
private Double half(int a) {
return a / 2.0;
}
private Double triple (int b) {
return b * 3;
}
double result = triple(half(8));
那么使用Function有什么好处呢?它提到了函数式编程,在Java中,函数式编程究竟是什么以及它能带来的好处是什么?这样做会像以下方式受益吗:
- 将函数链接起来执行(例如 andThen & compose)
- 在Java
Stream
中使用? - 作为函数倾向于定义为私有而不是公共的访问修饰符,而方法可以是任意一种?
基本上,我想知道,在什么情况下我们更喜欢使用函数而不是普通方法?有无法或难以使用或转换为普通方法的用例吗?
Comparator
,该函数将依赖于其他输入(因此排序顺序将动态地取决于它)。使用静态方法声明将需要添加额外的输入字段,这将很丑陋。动态定义一个Function
解决了这个问题。 - Ole V.V.