java_方法引用
什么是方法引用?
个人简述方法引用:
方法引用主要是针对已经有的方法来让目前的编程更加简洁
当我们想要使用一个接口的子类的时候,子类需要重写这个接口中的抽象方法,
被重写的这个方法参数列表固定,返回值类型固定,只要将相应的代码被重写的方法即可
因此引入lambda表达式,让我们更加方便简洁的只需要写入方法中的代码即可,其他操作交给jvm来处理,但是lambda表达式需要我们写明参数(和接口中对应方法对应的参数,参数类型可以省略),来方便我们在方法体中对传入参数的使用
方法引用是lambda表达式的升级版本,针对的是当恰好有一个方法(a代表)的功能,参数,返回值和我们想要重写的方法一样,则可以直接引用a来实现,使得代码更加简洁
使用方法引用只是重构方法,并不是调用方法,
- 什么是方法引用?
当我们要编写一个lambda表达式时,发现已经有了一个(或者自己定义了一个)方法实现了我们在lambda中要实现的功能,
这时就可以引用这个已写好的方法,来代替我们的lambda表达式
- 方法引用的前提
1).基于lambda,必须可以使用lambda的时候才能判断是否可以使用方法引用
2).引用方法做的事情必须是和我们使用lambda做的事情一样
3).引用的方法的形参、返回值必须和接口中的形参和返回值一样(方法引用式不需要写形参和返回值,jvm自动判定)
被引用方法形参必须等于 、大于接口中方法的形参类型;
被引用方法的返回值类型等于、小于接口中方法的返回值类型;
- 代码简写过程:
有名字子类à匿名内部类àlambdaàlambda省略格式à方法引用
二.方法引用格式及示例
引用成员方法:
对象名::成员方法名
引用静态方法:
类名::静态方法名
构造引用(有参和无参一样,参数jvm判定)
类名::new
数组构造器引用(数组定义必须指定个数,所以在使用方法引用时,个数会通过方法的形参传入)
数据类型[]::new
图形简介:
示例代码:
package com.ahd.fangfayinyong; public class Demo01 { public static void main(String[] args) { //通过实现三种方法创建线程-----匿名内部类,lambda表达式,方法引用对比来说明 //匿名内部类 new Thread(new Runnable() { @Override public void run() { System.out.println("创建一个线程"); } }).start(); //通过使用lambda表达式(lambda完整格式) new Thread((()->{ System.out.println("创建一个线程"); })).start(); //通过使用lambda表达式(lambda省略格式) new Thread((()-> System.out.println("创建一个线程"))).start(); //通过使用方法引用来实现上述功能 new Thread(System.out::println).start(); } }
有话想要对你说