
package com.chunzhi.Test05ObjectMethodReference;
/*
通过对象名引用成员方法,对象名:MethodRerObject;成员方法:printUpperCaseString
使用前提是对象名是已经存在的,成员方法也是存在的
就可以使用对象名来引用成员方法
*/
public class Test01ObjectMethodReference {
// 定义一个方法,方法的参数传递函数式Printable接口
public static void printString(Printable p) {
p.print("HelloWorld");
}
public static void main(String[] args) {
// 调用printString方法,方法的参数Printable是一个函数式接口,所以传递Lambda表达式
printString((String str) -> {
// 创建MethodRerObject对象
MethodRerObject mro = new MethodRerObject();
// 调用MethodRerObject对象中的成员方法printUpperCaseString,把字符串按照大写输出
mro.printUpperCaseString(str); // HELLOWORLD
});
/*
方法的引用是优化Lambda表达式的,执行后的效果一样
*/
/*
使用方法引用优化Lambda
对象是已经存在的MethodRerObject
成员方法也是已经存在的printUpperCaseString
所以我们可以使用对象名引用成员方法
*/
// 我们要将MethodRerObject对象创建出来,进行使用
MethodRerObject mro = new MethodRerObject();
printString(mro :: printUpperCaseString); // HELLOWORLD
}
}