动机
我用 Java 写代码将近 3 年了,但我仍然不是 Java8 专业人士,原因之一可能是编码竞赛,因为在竞赛中我不想花心思去思考 Java Lambda,因为它可能会出错。 但是当我进行开发时,显然 IntelliJ IDE 本身会提供建议/方法,因此我使用了一些 Java8 功能。
但是你知道我为什么说我不是 Java8 专家,因为我不能只依赖 IntelliJ Suggestions。
所以我决定写一篇文章来增强我对 Java8 特性的了解。
所以首先我们来看看函数式接口,它是 Stream 和 Lambdas 中的基本单元。
功能接口
功能接口是一个只有 1 个抽象方法的 Java 接口。 (记住它只能有 1 种方法)。
可以使用 @FunctionalInterface 注释以在编译时检查。
package java8.fucntional_interface;
@FunctionalInterface
public interface SquareInterface<T> {
T square(T num);
}
现在我们知道,如果我们想创建那个类的对象,我们必须实现那个抽象方法。
package java8.fucntional_interface;
import java.util.Scanner;
public class TestSquareInterface {
public static void main(String[] args) {
// initialization
Scanner scanner = new Scanner(System.in);
SquareInterface<Integer> integerSquareInterface = new SquareInterface<Integer>() {
@Override
public Integer square(Integer num) {
return num*num;
}
};
// lambda initialization
SquareInterface<Integer> lambdaIntegerSquareInterface = num -> num*num;
// take input
System.out.println("Enter number: ");
int number = scanner.nextInt();
// logic implementation
int squareOfNumber = integerSquareInterface.square(number);
// show output
System.out.printf("Number: %d and Square: %d", number, squareOfNumber);
}
}
我们可以将该实现转换为 lamdas。 (20号线)
我们知道每种方法都有 3 件事
- 方法输入(参数)
- 方法体
- 方法输出(返回)
现在如果你知道这 3 个在 Lambda 表达式中的位置,
您可以通过此模板将其转换为 lambda
可能你现在有点困惑,但是一旦你看到越来越多的 lambdas 表达式和代码,你就会获得经验。
所以你可以看到Lamdas和Functional Interface是如何相关的。
到目前为止,我已经在这个博客上投入了将近 1.5 个多小时,所以我在这里停止它,稍后我将继续它。
下一个议程
继续这一点,我们将看到 Java 中的流和一些内置功能接口,我们将在任何地方的流中使用 Lambda。
谢谢 …
关注七爪网,获取更多APP/小程序/网站源码资源!