五月十五日java基础知识点
1.匿名内部类适用于编写事件程序
interface Ishape{ void shape(); } class MyType{ public void outShape(Ishape s){//接口变量作为参数 s.shape(); } } public class app13_5 { public static void main(String[] args) { MyType m = new MyType(); m.outShape(new Ishape(){//匿名内部类作为方法方法调用参数 @Override public void shape(){ System.out.println("我可以是任何形状"); } }); } }
2.函数式接口(单抽象方法接口)是指只包含一种抽象方法接口
最好使用@FunctionalInterface注解表示接口为函数式接口
interface IntFun{ double dis(int r); } public class app13_6 { public static void main(String[] args) {//利用接口类创建匿名内部类对象并实现接口中的方法 IntFun fun =(new IntFun() { @Override public double dis(int r) { return 2*r; } }); double m = fun.dis(2); System.out.println(m); } }
3.Lambda表达式是指只有一种抽象方法接口环境下的一种简化定义形式
用于解决匿名内部类定义复杂问题
4.一个Lanbda表达式对应一个函数式接口,可将Lambada表达式看作是实现函数是接口
的匿名内部类的一个对象
例如:Runnable接口就是一个函数接口
@FuncatonalInterface
public interface Runnable {void run();}
@FunctionalInterface interface IntFun1{ double dis(int r); } public class app13_7 { public static void main(String[] args) {//利用Lambda表达式简化创建匿名内部类 IntFun1 fun = (i)->{return 2*i;}; double m = fun.dis(3); System.out.println(m); } }
5.函数式接口中可以有Object类中覆盖,也就是equals()方法、toString()方法、hashCode()方法
例如:public interface Comparator<T>//泛型接口
{
int comparator(T o1,T o2);
boolean equals(object obj);//父类中Object方法
}
6.可以在函数式接口中定义静态方法和默认方法
7.lambda表达式(匿名方法)是可以传递给方法的一段代码
Lambda表达式是由参数列表、箭头、方法体三部分组成
其语法格式:
(类型1 参数1,类型2 参数2 ,...)->{方法体}
例如:将a.outShape(new Ishape(){
public void shape(){
System.out.println("我可以是任何形状");}
});
用Lambda表达式表示为:
a.outShape(
() ->{System.out.println("我可以是任何形状!");});
Lambda表达式省略了接口类型与方法名,->左边是参数列表,右边是方法体
8.Lambda表达式不建议用来处理复杂语句组
public class app13_8 { public static void main(String[] args) { String []names = {"唐僧 "," 孙悟空 "," 猪八戒 "," 沙和尚 "}; List<String> al = Arrays.asList(names);//调用静态方法asList()创建列表对象 System.out.print("用匿名内部类遍历输出:"); al.forEach(new Consumer<String>() { @Override public void accept(String s) { System.out.print(s); } }); System.out.print("\n"+"用Lambda表达式遍历输出:"); al.forEach((s) -> System.out.print(s) ); } }
总结:函数式接口接口中只含有一个抽象方法的接口
Lambada表达式匿名方法
Lambda表达式是与函数式接口连用的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!