01.方法引用介绍
了解方法引用
当要传递给Lambda体的操作已有实现的方法,则可使用方法引用,方法引用可看作Lambda表达式深层次的表达。(就是一种语法糖)
不了解Lambda请看:https://blog.csdn.net/qq_46237746/article/details/124258475
主要使用情况
- 对象 :: 实例方法名
- 类 :: 静态方法名
- 类 :: 实例方法名
02.具体案例分析
使用forEach对ArrayList<>进行遍历
写法1:匿名内部类
Integer[] arr={9,3,5,6,7,10086,-5};
List<Integer> list = Arrays.asList(arr);
//使用匿名内部类
list.forEach(new Consumer<Integer>() {
@Override
public void accept(Integer x) {
System.out.println(x);
}
});
forEach方法源码
//Consumer<? super T> action是一个函数式接口
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
写法1可以使用Lambda表达式进行简化,具体代码如下(写法2):
Integer[] arr={9,3,5,6,7,10086,-5};
List<Integer> list = Arrays.asList(arr);
//使用Lambda表达式
//System.out是一个对象,println是对象上的一个方法
list.forEach(x-> System.out.println(x));
写法2可使用方法引用简化
Integer[] arr={9,3,5,6,7,10086,-5};
List<Integer> list = Arrays.asList(arr);
//System.out是一个对象,println是对象上的一个方法
list.forEach(System.out::println);