This commit is contained in:
dashan 2022-08-18 23:37:47 +08:00
parent 9edb389339
commit 4531b35003

View File

@ -8,14 +8,22 @@
+ 若 **lambda体** 中的内容有方法已经实现了,我们可以使用 “方法引用” (可以理解为方法引用是 lambda 表达式的另外一种表现形式)
+ 方法引用是基于函数式接口使用的,它可以将符合函数式接口抽象方法的静态方法或实例方法直接引用过来使用
### 用法
+ 通过对象名引用成员方法 对象 :: 成员方法名
+ 通过类名访问静态方法 类 :: 静态方法名
+ 通过super调用父类的成员方法 super :: 成员方法名
+ 通过this调用本类的成员方法 this :: 成员方法名
+ 构造器引用 类名 :: new
+ 数组引用 Type[] :: new
+ 通过对象名引用成员方法 **对象 :: 成员方法名**
+ 通过类名访问静态方法 **类 :: 静态方法名**
+ 特定类的成员方法引用 **类 :: 成员方法名**
+ 以下几种接口都是适用于特定类的成员方法引用,该接口的抽象方法都要多传一个引用方法所在类的实例对象,在下面的案例演示中我有进行演示
+ BiConsumer
+ BiFunction
+ BiPredicate
+ 通过super调用父类的成员方法 **super :: 成员方法名**
+ 通过this调用本类的成员方法 **this :: 成员方法名**
+ 构造器引用 **类名 :: new**
+ 数组引用 **Type[] :: new**
### 案例演示
@ -85,6 +93,34 @@ class FunctionRef{
名字:小红
```
#### 类 :: 成员方法名
+ ##### 实例
```java
public class TestA extends FunctionRef{
private void toStr(String name,BiConsumer<FunctionRef,String> consumer){
consumer.accept(new FunctionRef(),name);
}
@Test
public void test11(){
toStr(" 12",FunctionRef::trim);
}
}
class FunctionRef{
public void trim(String str){
System.out.println(str.trim());
}
}
```
+ ##### 输出内容
```
12
```
#### super :: 成员方法名
+ ##### 示例