简单介绍方法引用,当我们的lambda表达式的函数体是已经某个模块某函数实现过了,我们可以使用方法引用
1 2如上2图,我们自定义接口MyPrint作为函数式接口,然后主类里定义调用接口的方法,最后main里使用lambda表达式,效果如上,我们知道System.out都是已有的对象,println是其已有的方法
3我们就可以尝试如上的使用System.out::println作为lambda表达式的替代,这2个冒号表示方法引用,这里需要注意的是lambda表达式的参数必须是方法引用可接收的参数,否则会报错
通过对象名和成员方法引用
4还是针对上个代码,我们定义个类,里面定义方法,将输入字符串变成大写打印,
5然后我们在Main方法里创建对象,因为对象创建,他就有其成员方法,我们就可以将引用传给接口,如上,实现了大写打印
通过类名引用静态方法
6还是上个类,我们修改方法为静态方法,
7然后main中使用这个类作为::左侧即可
使用super引用父类的成员方法
8注意这里主类不是Demo了,而是Son,继承了Method,toUpper方法我们这里是非静态的,然后我们定义传入接口的方法fun,show方法调用,传入引用,这里我们就可以使用super::来引用了,效果如上
通过this引用本类成员方法
9感觉没什么说的,我们之前已经子类将方法复写成实现小写输出,show里使用this::upper实现本类引用
类的构造器引用
使用 类名::new
10我们定义Person类,定义构造方法和默认方法,
11为了使用引用,需要创建接口,我们将接口作为创建人物使用,返回Person对象
12在主类里定义方法,可以传入接口,我们根据传入接口和字符串创建Person对象,main调用时就可以使用类名::new引用
数组构造体引用
13还是创建一个接口,根据我们传入的长度,创建int类型数组
14我们先不使用引用,主类方法里定义createArray调用接口,返回int[],main方法里调用,我们使用lambda表达式即可创建指定长度数组,但是int[]本身是已知对象,所以我们可以使用构造方法
15如上,当然你肯定好奇这个10是怎么传递到new里的,,我也不知道
。。。。
到此为止javaSE课程就已经OVER了
网友评论