From 4531b350033010d8825115b38cb1d5043038cf04 Mon Sep 17 00:00:00 2001 From: dashan Date: Thu, 18 Aug 2022 23:37:47 +0800 Subject: [PATCH] doc up --- java/jdk8/方法引用.md | 48 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/java/jdk8/方法引用.md b/java/jdk8/方法引用.md index c688b56..0e3e1bd 100644 --- a/java/jdk8/方法引用.md +++ b/java/jdk8/方法引用.md @@ -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 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 :: 成员方法名 + ##### 示例