对象的方法引用
package cn.com.cqucc.demo04.ObjectMethodReference.Test04.Reference;
import java.io.ObjectInputStream;
/*
* 对象的方法 引用
* 通过对象名引用方法
* 使用前提是对象已经存在,成员方法也是已经存在的
* 作用:
* 优化Lambda表达式
* */
public class Test01Main {
public static void main(String[] args) {
// 实现方式一 匿名内部类
printString(new IPrintable() {
@Override
public void print(String s) {
ObjectMethodRer omr = new ObjectMethodRer();//创建一个自定义类对象
omr.toUpperCaseString(s);//HELLO WORLD!
}
});
// 实现方式二 Lambda表达式
printString((s) -> {
ObjectMethodRer omr = new ObjectMethodRer();
omr.toUpperCaseString(s);//HELLO WORLD!
});
// 实现方式三 Lambda表达式 + 方法引用
// 创建一个 自定义类对象
ObjectMethodRer omr = new ObjectMethodRer();
printString(omr::toUpperCaseString);//HELLO WORLD!
}
// 定义一个方法 方法的参数 是IPrintable 一个函数式接口
public static void printString(IPrintable ipa) {
ipa.print("hello World!");
}
}
package cn.com.cqucc.demo04.ObjectMethodReference.Test04.Reference;
/*
* 自定义一个 类 用于对象的方法引用
* */
public class ObjectMethodRer {
// 定义一个方法 用于将小写字符串转换为大写
public void toUpperCaseString(String s) {
System.out.println(s.toUpperCase());//将传递过来的小写字符串转换为大写
}
}
package cn.com.cqucc.demo04.ObjectMethodReference.Test04.Reference;
/*
* 定义一个函数式接口
* 函数式接口 :有且只有一个抽象方法的接口 ,但是可以有默认方法 静态方法等
* */
@FunctionalInterface
public interface IPrintable {
void print(String s);
}