title: 方法引用
date: 2019-07-24 14:19:23
categories:
- java基础
tags:
1. 思维导图
2. 方法引用
2.1. 概念
双冒号::为引用运算符,它所在的表达式被称为方法引用。如果Lambda要表达的函数方案已经存在于某个方法的实现中,那么则可以通过双冒号来引用该方法作为Lambda的替代者。
2.1.1. 目的
- 简化代码, 避免写重复逻辑
2.1.2. 使用场景
- 如果lambda所要表达的函数方案已经存在与某个方法的实现中, 则可以通过双冒号来引用该方法作为Lambda的替代者. 其实你想表达的lambda已经有人帮你实现了, 就没有必要自己再写一遍, 直接引用即可
2.2. 如何引用
2.2.1. 通过对象名引用成员方法
public class MethodRefObject {
public void printUpperCase(String str) {
System.out.println(str.toUpperCase());
}
}
函数式接口:
@FunctionalInterface
public interface Printable {
void print(String str);
}
public class Demo04MethodRef {
private static void printString(Printable lambda) {
lambda.print("Hello");
}
public static void main(String[] args) {
MethodRefObject obj = new MethodRefObject();
printString(obj::printUpperCase);
}
}
2.2.2. 通过类名称引用静态方法
2.2.3. 通过super引用成员方法
@FunctionalInterface
public interface Greetable {
void greet();
}
public class Human {
public void sayHello() {
System.out.println("Hello!");
}
}
public class Man extends Human {
@Override
public void sayHello() {
System.out.println("大家好,我是Man!");
}
//定义方法method,参数传递Greetable接口
public void method(Greetable g){
g.greet();
}
public void show(){
method(super::sayHello);
}
}