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

相关推荐
小Ti客栈20 小时前
Spring Boot 集成 Springdoc-OpenAPI 与 Knife4j实现接口文档与可视化调试
java·spring boot·后端
互联网中的一颗神经元20 小时前
小白python入门 - 39. 采集流水线小项目
开发语言·python
Wang's Blog20 小时前
Go-Zero 项目开发22:用户群聊功能的实现与完善
开发语言·golang
Ai拆代码的曹操20 小时前
Spring 事务 REQUIRES_NEW 嵌套调用:连接池翻倍的秘密
java·后端·spring
a11177620 小时前
坦克大战3D Three.js 3D (开源项目)
开发语言·javascript·3d
动恰客流统计21 小时前
ReID边缘计算视觉统计:餐饮店客流增长的数字化破局路径
java·大数据·运维·人工智能
Ivanqhz21 小时前
Rust &‘static str浅析
java·前端·javascript·rust
Wang's Blog1 天前
Go-Zero项目开发24: 基于Bitmap实现群聊消息已读未读
开发语言·后端·golang
weixin_419658311 天前
Docker 搭建 Jenkins 服务
java·docker·jenkins
captain3761 天前
多线程线程安全问题
java·java-ee