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的字符串,并放到数组当中(使用方法引用完成)

相关推荐
疯狂打码的少年39 分钟前
【Day13 Java转Python】装饰器、生成器与lambda——Python的函数式“三件套”
java·开发语言·python
大气层煮月亮41 分钟前
ERP-Agent 记忆系统优化方案
java·大数据·elasticsearch
石榴树下的七彩鱼42 分钟前
Python OCR 文字识别 API 接入完整教程
开发语言·人工智能·后端·python·ocr·api·图片识别
会飞的胖达喵43 分钟前
基于qt开发的RedisDesk
开发语言·qt
信看43 分钟前
看所有网卡参数,确认 RM520N-GL 网卡
开发语言·python
油炸自行车1 小时前
【Qt】运行 `windeployqt.exe` 打包Qt发布包,遇到警告的解决方法 (Warning: Cannot find any.....)
开发语言·qt·vs·打包·windeployqt·软件部署
yu85939581 小时前
C++ 虚拟磁盘与虚拟光驱实现
开发语言·c++
阿凤211 小时前
后端返回数据流的格式
开发语言·前端·javascript·uniapp
java1234_小锋1 小时前
Java高频面试题:Spring框架中的单例bean是线程安全的吗?
java·spring·面试
Matlab程序猿小助手1 小时前
【MATLAB源码-第315期】基于matlab的䲟鱼优化算法(ROA)无人机三维路径规划,输出做短路径图和适应度曲线.
开发语言·算法·matlab