@FunctionalInterface
是Java 8引入的一个注解,用于标记一个接口为函数式接口。函数式接口是指只有一个抽象方法(除了Object类中的默认方法如equals、hashCode等)的接口。在Java 8及以后版本中,函数式接口可以与lambda表达式配合使用。
下面例子:
@FunctionalInterface
public interface Supplier<T> {
T get();
}
这里Supplier<T>
接口有一个抽象方法get()
,它的目的是提供一个没有参数,但返回值类型为T的方法实现。例如,我们可以创建一个Supplier实例来获取一个Integer类型的随机数:
Supplier<Integer> randomIntSupplier = () -> new Random().nextInt(100);
在这个例子中,randomIntSupplier
就是一个实现了Supplier<Integer>
接口的lambda表达式。当我们调用get()
方法时,就会得到一个0-99之间的随机整数:
int randomInt = randomIntSupplier.get(); // 每次调用都会得到一个新的随机整数