目录
- 前言
- 1. 基本知识
- 2. Demo
前言
Java的基本知识推荐阅读:
- java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
- Spring框架从入门到学精(全)
1. 基本知识
@FunctionalInterface
是 Java 8 引入的一个注解,用于标记一个接口为函数式接口
函数式接口是只包含一个抽象方法的接口,可以有多个默认方法或静态方法,通常用于 lambda 表达式和方法引用
- 标记接口为函数式接口,明确接口的设计意图,使代码更易读,便于他人理解接口的用途
- 编译器会确保被标记的接口只有一个抽象方法。如果接口有多于一个抽象方法,编译器会报错,从而避免接口被错误地使用
2. Demo
基本的使用法则如下:
定义函数式接口以及使用lambda
@FunctionalInterface
interface MyFunctionalInterface {void myMethod();
}public class FunctionalInterfaceDemo {public static void main(String[] args) {MyFunctionalInterface func = () -> System.out.println("Hello, Functional Interface!");func.myMethod();}
}
多个默认方法和静态方法
@FunctionalInterface
interface MyFunctionalInterface {void myMethod();// 默认方法default void defaultMethod() {System.out.println("This is a default method.");}// 静态方法static void staticMethod() {System.out.println("This is a static method.");}
}public class FunctionalInterfaceDemo {public static void main(String[] args) {MyFunctionalInterface func = () -> System.out.println("Hello, Functional Interface!");func.myMethod();func.defaultMethod();MyFunctionalInterface.staticMethod();}
}
为了进一步说明此注解的主要性:(编译检查)
加上注解:
给一个实际的Demo例子如下:
// 定义函数式接口
@FunctionalInterface
interface CorrectFunctionalInterface {void singleMethod();// 可以有默认方法default void defaultMethod() {System.out.println("This is a default method.");}// 可以有静态方法static void staticMethod() {System.out.println("This is a static method.");}
}// 具体使用
public class FunctionalInterfaceDemo {public static void main(String[] args) {// 使用 lambda 表达式实现 singleMethodCorrectFunctionalInterface func = () -> System.out.println("Hello from singleMethod!");// 调用 singleMethodfunc.singleMethod();// 调用默认方法func.defaultMethod();// 调用静态方法CorrectFunctionalInterface.staticMethod();}
}
截图如下: