返回顶部
首页 > 资讯 > 后端开发 > JAVA >【从入门到起飞】JavaSE—方法引用
  • 665
分享到

【从入门到起飞】JavaSE—方法引用

java开发语言 2023-09-24 08:09:36 665人浏览 泡泡鱼
摘要

🎊专栏【JavaSE】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【The truth that you leave】 ǹ

🎊专栏【JavaSE】
🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。
🎆音乐分享【The truth that you leave】
🥰欢迎并且感谢大家指出我的问题

文章目录


在这里插入图片描述

🍔概述

把已经有的方法拿过来用,作为函数式接口中抽象方法的方法体
使用::来引用

🍔注意

引用处需要是函数式接口
2.被引用的方法需要已经存在
3.被引用方法的形参和返回值需要跟抽象方法的形参和返回值保持一致
4.被引用方法的功能需要满足当前的要求

🎈如何确定是否是函数式接口

查看的是new后面的东西是否是函数式接口
在这里插入图片描述
在这里插入图片描述

🍔示例

对一个数组,进行倒序排序

在这里插入图片描述
方法引用
在这里插入图片描述

🎄方法引用的分类

🏳️‍🌈引用静态方法

格式:类名 :: 静态方法
例如:Integer::parseInt

在这里插入图片描述

🏳️‍🌈引用成员方法

格式:对象 :: 成员方法
例如
其他类:其他类对象 :: 方法名
本类:this :: 方法名
父类:super :: 方法名

在这里插入图片描述

🛸注意

静态方法是没有this的
所以下图会报错
在这里插入图片描述

🏳️‍🌈引用构造方法

格式:类名 :: new
例子:Student :: new

🛸方法引用的规则:

需要有函数式接口
2.被引用的方法必须已经存在
3.被引用方法的形参和返回值,需要跟抽象方法的形参返回值保持一致
4.被引用方法的功能需要满足当前的需求

Student.java

package com.itheima.a01myfunction;public class Student {    private String name;    private int age;    public Student() {    }    public Student(String str) {        String[] arr = str.split(",");        this.name = arr[0];        this.age = Integer.parseInt(arr[1]);    }    public Student(String name, int age) {        this.name = name;        this.age = age;    }        public String getName() {        return name;    }        public void setName(String name) {        this.name = name;    }        public int getAge() {        return age;    }        public void setAge(int age) {        this.age = age;    }    public String toString() {        return "Student{name = " + name + ", age = " + age + "}";    }}

FunctionDemo4.java

package com.itheima.a01myfunction;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.stream.Collectors;public class FunctionDemo4 {    public static void main(String[] args) {                //1.创建集合对象        ArrayList<String> list = new ArrayList<>();        //2.添加数据        Collections.addAll(list, "张无忌,15", "周芷若,14", "赵敏,13", "张强,20", "张三丰,100", "张翠山,40", "张良,35", "王二麻子,37", "谢广坤,41");        //3.封装成Student对象并收集到List集合中        //String --> Student              List<Student> newList2 = list.stream().map(Student::new).collect(Collectors.toList());        System.out.println(newList2);    }}

🏳️‍🌈使用类名引用成员方法

格式:类名 :: 成员方法
例子:String :: substring

🛸方法引用的规则:

需要有函数式接口
2.被引用的方法必须已经存在
3.被引用方法的形参,需要跟抽象方法的第二个形参到最后一个形参保持一致,返回值需要保持一致。
4.被引用方法的功能需要满足当前的需求

🛸抽象方法形参的详解:

第一个参数:表示被引用方法的调用者,决定了可以引用哪些类中的方法
在Stream流当中,第一个参数一般都表示流里面的每一个数据。
假设流里面的数据是字符串,那么使用这种方式进行方法引用,只能引用String这个类中的方法

第二个参数到最后一个参数:跟被引用方法的形参保持一致,如果没有第二个参数,说明被引用的方法需要是无参的成员方法

🛸局限性:

不能引用所有类中的成员方法。
是跟抽象方法的第一个参数有关,这个参数是什么类型的,那么就只能引用这个类中的方法。
在这里插入图片描述

🏳️‍🌈引用数组的构造方法

格式:数据类型[ ] :: new
例子:int[ ] :: new

🛸注意

数组的类型,需要跟流中数据的类型保持一致。
在这里插入图片描述

🍔总结

在这里插入图片描述
在这里插入图片描述

🍔彩蛋

在这里插入图片描述

来源地址:https://blog.csdn.net/m0_72853403/article/details/133141096

--结束END--

本文标题: 【从入门到起飞】JavaSE—方法引用

本文链接: https://lsjlt.com/news/416797.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作