package com.Lucky.Function;
import java.util.Arrays;
import java.util.Comparator;
import java.util.stream.Collector;
/*
方法引用: 将已经存在的方法进行引用
使用条件:1.引用地方要是函数式接口:@FunctionalInterface
2.被引用的方法必须存在
3.被引用的方法的形参以及返回值要跟抽象方法的保持一致
4.被引用的方法要满足当前抽象方法的需求
*/
public class Function1 {
public static void main(String[] args) {
Integer[] arr={1,2,3,4,5,6};
//1.匿名内部类
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1-o2;
}
});
System.out.print("匿名内部类:"+Arrays.toString(arr)+"\t");
System.out.println();
//2.lamda表达式
Arrays.sort(arr, (o1,o2) ->o1-o2);
System.out.print("lamda表达式:"+Arrays.toString(arr)+"\t");
System.out.println();
//2.方法引用: 方法引用符 ::
Arrays.sort(arr,Function1::subInt);
System.out.print("方法引用标志 ::"+Arrays.toString(arr)+"\t");
}
//被引用的方法
public static int subInt(int val,int v) {
return val-v;
}
public int sub(int val,int v) {
return val-v;
}
public boolean filter(String s) {
return s.startsWith("张")&& s.length() == 3;
}
}
以上属于静态方法的引用