函数式接口的概念和函数式接口的定义和函数式接口的使用
概念:
函数式接口在java中是指:有且仅有一个抽象方法的接口
函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现的就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。
只有确保接口中有且仅有一个抽象方法Java中的Kambda才能顺利的进行推导
当然接口中可以包含其他的方法(默认,静态,私有)
备注:语法糖是指使用更加方便,但是原理不变的代码语法。例如在遍历集合的使用使用for-each语法,其实底层的实现原理仍然是迭代器
这便是语法糖。从应用层面来讲,Java中的Lambda可以被当做是匿名内部类的语法糖,但是两者在原理上是不同的
格式:
只要确保接口中有且仅有一个抽象方法即可
修饰符 interface 接口名称 {
public abstract 返回值类型 方法名称(可选参数信息);
}
由于接口当中的抽象方法public abstract是可以省略的,所以定义一个函数式接口很简单
public inteface MyFunctionalInterface {
void myMethid();
}
@FuntionalInterface注解
作用:可以检测结构是否是一个函数式接口
是:编译成功
否:编译失败
package com.yang.Test.MyFunctionalInterfaceStudy;
@FunctionalInterface
public interface MyFunctionalInterface {
void method();
}
package com.yang.Test.MyFunctionalInterfaceStudy;
public class MyFunctionalInterfaceImpl implements MyFunctionalInterface{
@Override
public void method() {
System.out.println("啦啦啦啦啦");
}
}
package com.yang.Test.MyFunctionalInterfaceStudy;
/**
* 函数式接口的使用:一般可以作为方法的参数和返回值
*/
public class Demo {
//定义一个方法,参数使用函数式接口MyFunctionalInterface
public static void show(MyFunctionalInterface myInter){
myInter.method();
}
public static void main(String[] args) {
//调用show方法,方法的参数是一个接口,所以可以传递接口的实现类对象
show(new MyFunctionalInterfaceImpl());
//调用show方法,方法的参数是一个接口,所以我们可以传递接口的匿名内部类
show(new MyFunctionalInterface() {
@Override
public void method() {
System.out.println("噜啦啦啦啦啦");
}
});
//调用show方法,方法的参数是一个函数式接口,所以我们可以使用lambda表达式
show(() -> {
System.out.println("啦啦啦啦啦1111");
});
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构