JAVA 8 中何时使用函数式接口

When to use functional interfaces in JAVA 8

我在 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.

上面的代码有什么区别

谁能澄清一下???

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

例如,使用方法引用没有任何意义,因为它们不会给您带来任何好处。如果您想将方法引用传递给其他函数或延迟调用,使用方法引用可能是有意义的。否则你只会用显式的 apply 调用弄乱你的代码。

我建议查看 Java 8 个包含示例的介绍。书看了Functional Programming in Java,只能推荐