方法引用是 java 8 的新特性
方法引用,能简化 lambda 表达式,
表示引用别的方法,来作为方法的实现,参数与返回值与接口相同
1.方法引用的几种形式
- 类名及其静态方法,class::method
- 构造器引用,objectName::new
- 对象及其方法, object::method
- 父类方法,super::method
- 本对象方法,this::method
2.代码实例
1.静态方法引用,使用已有的静态方法处理lambda
import java.util.Arrays;
public class Demo {
public static void main(String[] args) {
Arrays.asList("a", "c", "b").forEach(s -> System.out.println(s));
Arrays.asList("a", "c", "b").forEach(System.out::println);
}
}
2.构造器引用,相当于 new class(可以是数组,如 int[]::new)
import java.util.function.Supplier;
public class Demo {
public static void main(String[] args) {
Supplier<List<String>> supplier1 = () -> new ArrayList<String>();
Supplier<List<String>> supplier2 = ArrayList<String>::new;
}
}
3.对象的方法引用,使用已存在对象的方法处理
import java.util.Arrays;
public class Demo
{
public static void main(String[] args)
{
Demo object = new Demo();
Arrays.asList("a", "c", "b").forEach(s -> object.println(s));
Arrays.asList("a", "c", "b").forEach(object::println);
}
public void println(String s)
{
System.out.println(s);
}
}
4.父类方法调用,谁调用此方法,就是谁的super,super::method
5.本对象的方法调用,谁调用此方法,this 就是谁,this::method