分析:
Lambda表达式的目的,打印参数传递的字符串
把参数s,传递给了System.out对象,调用out对象方法println对字符串进行输出
注意:
1.System.out对象是已经存在的
2.println方法也是存在的
所以我们可以使用方法引用来优化Lambda表达式
实现:
@FunctionalInterface public interface Printable { void print(String s); }
public class Demo01Printable { //定义一个方法参数传递Printable接口,对字符串进行打印 public static void printString(Printable p){ p.print("HelloWorld"); } public static void main(String[] args) { //调用printString方法,方法的参数printable是一个函数式接口所以可以传递Lambda printString((s)->{ System.out.println(s); }); printString(System.out::println); } }
通过对象名引用成员方法
代码如下:
@FunctionalInterface public interface Printable { void print(String s); }
public class MethodReObject { public void printUpperCaseString(String str){ System.out.println(str.toUpperCase()); } }
public class demo01ObjectMethodReference {
public static void printString(Printable p){
p.print("Hello");
}
public static void main(String[] args) {
printString((s)->{
MethodReObject methodReObject = new MethodReObject();
methodReObject.printUpperCaseString(s);
});
/*
使用方法引用Lambda
对象是已经存在MethodReferObject
成员方法也是已经存在的printUpperCaseString
所以我们可以以使用引用成员方法
*/
MethodReObject methodReObject = new MethodReObject();
printString(methodReObject::printUpperCaseString);
}
}