Java函数接口与实现方式介绍
Java函数接口是一个只有一个抽象方法的接口。函数接口主要用于定义Lambda表达式的类型。在Java 8之前,接口中的所有方法都是抽象方法,需要在实现类中提供方法的具体实现。但是Java 8引入了Lambda表达式,可以通过实现函数接口来创建匿名函数。
函数接口可以使用@FunctionalInterface注解来声明。这个注解是可选的,但是建议使用它来确保接口只有一个抽象方法。如果一个接口有多个抽象方法,则编译器会报错。
下面是一个函数接口的例子:
@FunctionalInterface
public interface MyFunction {
public void doSomething();
}
在上面的例子中,MyFunction是一个函数接口,只有一个抽象方法doSomething()。可以看到,该接口没有提供方法的具体实现,只定义了方法的签名。
为了使用函数接口,可以在程序中创建一个实现该接口的类,并提供方法的具体实现。也可以使用Lambda表达式来创建一个匿名函数,这种方式更常用。
下面是使用函数接口的两种实现方式的示例:
1. 创建一个实现类
public class MyFunctionImpl implements MyFunction {
@Override
public void doSomething() {
System.out.println("Doing something...");
}
}
在上面的示例中,MyFunctionImpl是一个实现了MyFunction接口的类,并提供了doSomething()方法的具体实现。
2. 使用Lambda表达式
MyFunction myFunction = () -> {
System.out.println("Doing something...");
};
在上面的示例中,使用Lambda表达式创建了一个匿名函数,并将其赋值给一个MyFunction类型的变量。该匿名函数实现了MyFunction接口的抽象方法doSomething()。
使用Lambda表达式的方式更加简洁,可以减少代码量,并且更易读。因此,在Java 8之后,函数接口与Lambda表达式的组合成为了一种常用的编程方式。
