何时在JAVA 8中使用功能接口

时间:2016-08-03 06:17:33

标签: performance java-8 functional-interface

我在java7中有项目,我现在想要转换为java8。

因为我有一个代码调用我已经转换为Java 8的方法,如下所示。

JAVA 7:

Long id=10;
Student student= Student.findById(id);

JAVA 8

Long id=10;
Function<Long,Student> f=Student::findById;
f.apply(id);

现在我的问题是将这些方法调用转换为 JAVA 8 是没有意义的。

如果是这样,JAVA 7和JAVA 8中的上述代码有什么区别。

任何人都可以澄清这个???

1 个答案:

答案 0 :(得分:2)

在Java 7示例中,您将在第2行调用findById()并将结果分配给student。通过在Java 8代码中使用方法引用,首先保存对f中方法findById()的引用,并在第3行中调用该方法。方法引用使您能够延迟方法的调用。与Streams结合使用,您可以通过这种方式实现laziness

对于你的例子,使用方法参考没有意义,因为它们不会给你带来任何好处。如果要将方法引用传递给其他函数或延迟调用,则使用方法引用是有意义的。否则,您只需使用显式应用调用来混乱您的代码。

我建议查看功能示例的Java 8介绍。我读过这本书Functional Programming in Java,只能推荐它。