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

相关推荐
Leighteen8 小时前
`try-finally` 里的 `return`:为什么 `finally` 会悄悄改掉返回值、吞掉异常
java·开发语言
0566468 小时前
Python康复训练——控制流与函数
开发语言·python·学习
峥无9 小时前
C++11 深度详解:现代 C++ 基石全梳理
开发语言·c++·笔记
阿米亚波9 小时前
【C++ STL】std::unordered_multimap
开发语言·数据结构·c++·笔记·stl
名字还没想好☜9 小时前
Go 的 time.After 在 select 循环里内存泄漏:定时器堆积原理与 timer.Reset 正确姿势
java·数据库·golang·go·goroutine
SomeB1oody9 小时前
【RustyML入门】1.0. 快速上手
开发语言·后端·机器学习·rust·教程
圆山猫9 小时前
[Virtualization](三):RISC-V H-extension 与 Guest 执行模式
android·java·risc-v
狗凯之家源码网10 小时前
短剧系统搭建实战:源码功能与商业变现效果全景展示
开发语言·php
caishenzhibiao10 小时前
期货先行者主图 同花顺期货通指标
java·c语言·c#
史呆芬10 小时前
分布式事务实战:微服务跨服务数据一致性解决方案
java·后端·spring cloud