当前位置: 首页 > ai >正文

匿名内部类与函数式编程

匿名内部类

定义:匿名内部类是只创建一次对象时使用的特殊内部类,在需要创建一个只使用一次的类的对象时,使用匿名内部类可以让代码更加简洁。可以把它想象成一个“一次性演员”,在特定的场景下临时登场表演一次,表演结束后就不再需要它了。

即时定义与实例化:在new关键字后直接定义类体并创建实例,常用于事件监听、线程实现等场景。

函数式编程

Lambda表达式:

jdk8开始新增的一种语法形式,它并表示函数,可以用于替代某些匿名内部类,从而让程序更简洁,可读性更好。Lambda并不是可以简化全部的匿名内部类,Lambda只能简化函数式接口的匿名内部类。

函数式接口:有且只有一个抽象方法的接口        

@FuctionalInterface是声明函数式接口的注解

Swim s1=new Swim(){
@0verride
public void swimming()f
System.out.println("学生游泳贼快~~~~");
}
Swim s1=()->{
System.out.println("学生游泳贼快~~~~");
}
s1.swimming();
}
@FunctionalInterface//声明函数式接口的注解。
interface Swim{
void swimming();
}

Lambda表达式的省略规则

作用:进一步简化Lambda表达式的写法

具体规则:

参数类型全部可以省略不写。
如果只有一个参数,参数类型省略的同时“()”也可以省略,但多个参数不能省略“()”

如果Lambda表达式中只有一行代码,大括号可以不写,同时要省略分号“;”

如果这行代码是return语句,也必须去掉return。

Arrays.sort(students,new Comparator<Student>(){
@0verride
public int compare(student o1,Student o2){
return o1.getAge()-o2.getAge();//按照年龄升序!
});
Arrays.sort(students,(student o1,Studento2)->{
return o1.getAge()-o2.getAge();//按照年龄升序!
});
Arrays.sort(students,(o1,02)->{
return o1.getAge()-o2.getAge();//按照年龄升序!
});
Arrays.sort(students,(o1,02)->01.getAge()-o2.getAge());

静态方法的引用

类名::静态方法

使用场景:
如果某个Lambda表达式里只是调用一个静态方法,并且“→”前后参数的形式一致,就可以使用静态方法引用

实例方法使用

对象名::实例方法

使用场景:如果某个Lambda表达式里只是通过对象名称调用一个实例方法,并且“→”前后参数的形式一致,就可以使用实例方法引用。

特定类的方法引用

特定类的名称::方法

使用场景:如果某个Lambda表达式里只是调用一个特定类型的实例方法,并且前面参数列表中的第一个参数是作为方法的主调,后面的所有参数都是作为该实例方法的入参的,则此时就可以使用特定类型的方法引用。

构造器引用

类名::new

使用场景:如果某个Lambda表达式里只是在创建对象,并且“→”前后参数情况一致,就可以使用构造器引用。

http://www.xdnf.cn/news/8835.html

相关文章:

  • MYSQL中的分库分表
  • CQF预备知识:Python相关库 -- NumPy 基础知识 - ndarray 索引
  • MedGemma 简介
  • leetcode3-无重复字符的最长子串
  • Spring Security框架全面解析与应用实践
  • gcc编译优化参数-O0和-Os区别
  • 先知AI打造智能企业引擎
  • kaggle房价预测-0.12619-排名:757
  • ARM架构深度解析:从指令集到内核设计
  • 机械师安装ubantu双系统:二、磁盘分区
  • 小可爬楼
  • 通过 Terraform 构建您的第一个 Azure Linux 虚拟机
  • 湖仓融合的“最后一公里”:StarRocks 存算分离如何优化湖上实时分析?
  • openssl 使用生成key pem
  • 万事如函数
  • Windows File Copy
  • 第11次课 while循环
  • (27)运动目标检测 之 分类(如YOLO) 数据集自动划分
  • 关于多类型数据划分清洗的整理
  • 09_模型训练篇-卷积(上):如何用卷积为计算机“开天眼”?
  • 【C语言】指针全局变量
  • PostGIS使用小结
  • 微雪墨水屏 如何 控制绘制图形(如点、线、矩形等)线条粗细或点的大小
  • ChatGPT+知网,AI如何辅助真实科研写作流程?
  • 以太坊的基本理解
  • 2025年- H47-Lc155 --102. 二叉树的层序遍历(队列、广搜)--Java版
  • STL-从list节点创建和释放展开(内存管理)
  • Claude Code Agent 模式深度解读(一)!Anthropic提出的下一代Code CLI工具
  • 第四章 面向对象(基础)
  • ​​UniBoard:私有化部署,导航笔记文件一站式管理