方法引用符
- ::该符号为引用运算符,而它所在的表达式被称为方法引用
- 推到与省略原则
①如果使用Lambda。那么根据“可推到就是可省略”的原则,无需指定参数类型,也无需指定重载形式,他们都将被自动推导
②如果使用方法引用,也是同样可以根据上下推导
③方法引用是Lambda的孪生兄弟
- 例子
public interface lambdaTest {
void test(String str);
}
public class Demo {
public static void main(String[] args) {
//lambda表达式
show((String s)->{
System.out.println(s);
});
//方法引用
show(System.out::println);
}
public static void show(lambdaTest lambdaTest){
lambdaTest.test("hello world");
}
}
Lambda表达式支持的方法引用
- 常见的引用方法
①引用类方法
②引用对象的实例方法
③引用类的实例方法
④引用构造器
- 引用类方法(其实就是引用类的静态方法)
格式:类名::静态方法
范例:Integer::parseInt(因为Integer类中有parseInt静态方法)
- 引用对象的实例方法(其实就是引用类中的成员方法)
格式:对象::成员方法
范例:“Hello World“.toUpperCase()
- 引用类的实例方法(其实就是引用类中的成员方法)
格式:类名::成员方法
范例:String ::substring
参数问题:第一个参数作为调用者,后面的参数全部传递给该方法作为参数
- 引用构造器(其实就是引用构造方法)
格式:类名::new
范例:Student::new
参数问题:它的形式参数全部传递给构造器作为参数