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

相关推荐
西部风情1 天前
聊聊并发、在线、TPS
android·java·数据库
爬虫程序猿1 天前
用 Python 给京东商品详情做“全身 CT”——可量产、可扩展的爬虫实战
开发语言·爬虫·python
顾漂亮1 天前
Token快过期的三种续期方案
java·spring·状态模式
徐同保1 天前
tailwindcss暗色主题切换
开发语言·前端·javascript
蓝纹绿茶1 天前
bash:**:pip:***python: 错误的解释器: 没有那个文件或目录
开发语言·python·pip
云知谷1 天前
【经典书籍】C++ Primer 第15章类虚函数与多态 “友元、异常和其他高级特性” 精华讲解
c语言·开发语言·c++·软件工程·团队开发
START_GAME1 天前
深度学习Diffusers:用 DiffusionPipeline 实现图像生成
开发语言·python·深度学习
牢七1 天前
mwf攻防。
java
不爱编程的小九九1 天前
小九源码-springboot088-宾馆客房管理系统
java·开发语言·spring boot
Evand J1 天前
【MATLAB例程】到达角度定位(AOA),平面环境多锚点定位(自适应基站数量),动态轨迹使用EKF滤波优化。附代码下载链接
开发语言·matlab·平面·滤波·aoa·到达角度