Lambda表达式
- Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)
- 箭头函数
| 1.Java中的箭头函数只是用与接口中有且只有一个抽象方法的 |
| 2.箭头函数的参数就是当前接口中定义的抽象方法参数 |
| 3.箭头函数的方法体就是需要重写的当前接口中的抽象方法 |
| 4.箭头函数的返回值就是当前接口中的抽象方法的返回值 |
| (parameters) ->{ statements; } //(参数) ->{方法体} |
| 1.可选类型声明:不需要声明参数类型,编译器可以统一识别参数值 |
| 2.可选的参数圆括号:只有一个参数无需定义圆括号,但多个参数需要定义圆括号 |
3.可选的大括号:如果主体只包含了一个语句,可省略大括号
4.可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,主体部分有大括号则需使用return关键字
| |
| |
| () -> 5 |
| |
| x -> 2 * x |
| |
| (x, y) -> x – y |
| |
| (int x, int y) -> x + y |
| |
| (String s) -> System.out.print(s) |
方法引用
- 定义:方法引用通过方法的名字来指向一个方法,标准形式是 类名::方法名
| 1. 构造器引用: |
| a.构造方法引用(也称作构造器引用):语法一 Class::new 语法二 Class<T>::new |
| b.数组构造方法引用:语法:TypeName[]::new |
| |
| int[]::new |
| |
| 2. 静态方法引用:语法是Class::static_method |
| 3. 引用某个对象的实例方法 containingObject::instanceMethodName |
| |
| String类的compareToIgnoreCase方法,该方法比较两个String字符串;这里是String类型对象的compareToIgnoreCase方法的引用 |
| 4. 引用某个类型的(任意)对象的实例方法 ContainingType::methodName |
| a.实例上的实例方法引用: |
| 组成语法格式:instanceReference::methodName |
| |
| b.超类上的实例方法引用: |
| 组成语法格式:super::methodName |
| |
| c.类型上的实例方法引用: |
| 组成语法格式:ClassName:: |
| methodName |
| |
| System.out::println 等同于 s -> System.out.println(s); |
| Math::max 等同于 (int x, int y) -> Math.max(x,y); |
| Object::equals 等同于 (o1,o2) -> o1.equals(o2) |
- 方法引用是用来直接访问类或者实例的已经存在的方法或者构造方法;方法引用提供了一种引用而不执行方法的方式
- 方法引用是一个Lambda表达式
内置函数接口
| 1.Function<T, R>:函数型接口,接收类型为T的参数,并对其操作,然后返回类型为R的结果。其中包含有apply(T t)方法 |
| 2.Consumer<T>:消费型接口,接收类型为T的参数,对其进行操作。无返回值。其中包含有accept(T t)方法 |
| 3.Supplier<T>:供应型接口,返回类型为T的结果。其中包含有T get()的方法 |
| 4.Predicate<T>:断言型函数,接收类型为T的参数,对其进行断言,返回类型为boolean的结果。其中包含有boolean test(T t)的方法 |
行为参数化
| 1.定义:通过API来传递代码的能力;也就是说当我们要写两个方法,两个方法中只有几行代码不同,可将不同的部分提取出来,作为参数传递进去 |
| 2.让方法接受多种行为(或战略)作为参数,并在内部使用,完成不同的行为 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
2021-07-22 ubuntu入门