Java方法引用(下)

  • 方法引用总结

1.什么是方法引用?

把已经存在的方法拿过来用,当做函数式接口中抽象方法的方法体

2.::是什么符号?

方法引用符

3.方法引用时要注意什么?

●需要有函数式接口

●被引用方法必须已经存在

●被引用方法的形参和返回值需要跟抽象方法保持一致

●被引用方法的功能要满足当前的需求

引用方法说明

1.引用静态方法

类名::静态方法

2.引用成员方法

对象::成员方法(引用任一个类对象的方法)

this::成员方法(只能由成员方法引用)

super::成员方法(只能由成员方法引用)

3.引用构造方法

类名::new

4.使用类名引用成员方法

类名::成员方法

不能引用所有类中的成员方法

如果抽象方法的第一个参数是A类型的只能引用A类中的方法

5.引用数组的构造方法

数据类型\[\]::new

  • 练习

练习1:集合中存储一些字符串的数据,比如:张三,23。收集到Student类型的数组当中(使用方法引用完成)

java 复制代码
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class FInvokeDemo7 {
    public static void main(String[] args) {
        // 创建集合并添加
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list, "姓名1,18", "姓名2,28", "姓名3,36", "姓名4,41");
        // 转换为Studeng对象并添加到数组中
        // Student类中有一个参数类型String的构造方法
        Student[] arr = list.stream().map(Student::new).toArray(Student[]::new);
        System.out.println(Arrays.toString(arr));
    }
}

练习2:创建集合添加学生对象,学生对象属性:name,age只获取姓名并放到数组当中(使用方法引用完成)

java 复制代码
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.stream.Stream;

public class FInvokeDemo8 {
    public static void main(String[] args) {
        // 创建集合并添加
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list, "姓名1,18", "姓名2,28", "姓名3,36", "姓名4,41");
        // 转换为Studeng对象并添加到数组中
        // Student类中有一个参数类型String的构造方法
        Student[] arr = list.stream().map(Student::new).toArray(Student[]::new);
        // 使用上一步创建的学生对象数组,获取姓名,并转为String数组
        String[] nameArr = Stream.of(arr).map(Student::getName).toArray(String[]::new);
        System.out.println(Arrays.toString(nameArr));
    }
}

练习3:创建集合添加学生对象,学生对象属性:name,age

把姓名和年龄拼接成:张三-23的字符串,并放到数组当中(使用方法引用完成)

相关推荐
稚南城才子,乌衣巷风流3 小时前
函数:编程中的核心概念
开发语言·前端·javascript
阿米亚波3 小时前
【C++】流式数据输入处理(不完全整理)
开发语言·c++·笔记
大模型码小白4 小时前
JAVA 集合框架进阶:List 与 Set 的深度解析与实战
java·开发语言·人工智能·windows·语言模型·list·ai编程
名字还没想好☜4 小时前
Go 的 time.Ticker 陷阱:定时任务里被忽略的内存泄漏与正确关闭
java·数据库·golang·go·定时器
皓月斯语4 小时前
【C++基础】三目运算符
开发语言·数据结构·c++
音符犹如代码5 小时前
后端视角看 EventBus:发布订阅总线的原理、场景与用法
java·spring boot·guava
前端炒粉5 小时前
手撕小汇总
java·前端·javascript
初願致夕霞5 小时前
C++懒汉单例设计详解
服务器·开发语言·c++
脱胎换骨-军哥5 小时前
C++分布式系统设计:从通信引擎到分布式共识
开发语言·c++·分布式
唐青枫5 小时前
Java Kafka 实战指南:从 Topic、分区到 Spring Boot 可靠消息处理
java