什么是 Lambda 表达式
● 文献中把 Lambda 表达式一般称作匿名函数,语法为 (参数部分) -> 表达式部分
● 它本质上是一个函数对象
● 它可以用在那些需要将行为参数化的场景,例如 Stream API,MyBatisPlus 的 QueryWrapper 等地方
Lambda 与匿名内部类有何异同
● 它们都可以用于需要行为参数化的场景
● Lambda 表达式必须配合函数式接口使用,而匿名内部类不必拘泥于函数式接口,其它接口和抽象类也可以
● Lambda 表达式比匿名内部类语法上更加简洁
● 匿名内部类是在编译阶段由程序员编写提供,而 Lambda 表达式是在运行阶段动态生成它所需的类
● 【进阶】Lambda 中 this 含义与匿名内部类中的 this 不同
8、反射及泛型
8.1 反射
什么是反射
● 反射是 java 提供的一套 API,通过这套 API 能够在运行期间
○ 根据类名加载类
○ 获取类的各种信息,如类有哪些属性、哪些方法、实现了哪些接口 ...
○ 类型参数化,根据类型创建对象
○ 方法、属性参数化,以统一的方式来使用方法和属性
● 反射广泛应用于各种框架实现,例如
○ Spring 中的 bean 对象创建、依赖注入
○ JUnit 单元测试方法的执行
○ MyBatis 映射查询结果到 java 对象
○ ...
● 反射在带来巨大灵活性的同时也不是没有缺点,那就是反射调用效率会受一定影响
8.2 泛型