方法引用02_方法引用_通过对象名引用成员方法

package com.itheima.demo05.ObjectMethodReference;
/*

通过对象名引用成员方法
使用前提是对象名是已经存在的,成员方法也是已经存在
就可以使用对象名来引用成员方法

*/
public class Demo01ObjectMethodReference {

//定义一个方法,方法的参数传递Printable接口
public static void printString(Printable p){
    p.print("Hello");
}

public static void main(String[] args) {
    //调用printString方法,方法的参数Printable是一个函数式接口,所以可以传递Lambda表达式
    printString((s)->{
        //创建MethodRerObject对象
        MethodRerObject obj = new MethodRerObject();
        //调用MethodRerObject对象中的成员方法printUpperCaseString,把字符串按照大写输出
        obj.printUpperCaseString(s);
    });

    /*
        使用方法引用优化Lambda
        对象是已经存在的MethodRerObject
        成员方法也是已经存在的printUpperCaseString
        所以我们可以使用对象名引用成员方法
     */
    //创建MethodRerObject对象
    MethodRerObject obj = new MethodRerObject();
    printString(obj::printUpperCaseString);
}

}
package com.itheima.demo05.ObjectMethodReference;

public class MethodRerObject {

//定义一个成员方法,传递字符串,把字符串按照大写输出
public void printUpperCaseString(String str){
    System.out.println(str.toUpperCase());
}

}
package com.itheima.demo05.ObjectMethodReference;
/*

定义一个打印的函数式接口

*/
@FunctionalInterface
public interface Printable {

//定义字符串的抽象方法
void print(String s);

}

你可能感兴趣的:(java)