自定义函数接口 采用@FunctionalInterface,如 我们定义个 参数T,返回结果为R的自定义函数
@FunctionalInterface
public interface MyFunction<T, R> {
R sum(T t1,T t2);
}
测试代码 这里顺便测试下jdk自带的函数接口
public class FunctionTest {
//自定义函数接口
public static int sumDef(int a,int b,MyFunction<Integer,Integer> myFunction){
return myFunction.sum(a,b);
}
//含有一个参数的函数
public static int sumU(int a,UnaryOperator<Integer> d){
return d.apply(a);
}
//含有多个参数的函数
public static int sumB(int a,int b, BinaryOperator<Integer> d){
return d.apply(a,b);
}
//生产者
public static int sumS(Supplier<Integer> s){
return s.get();
}
//消费者
public static void sumC(int a,Consumer<Integer> c){
c.accept(a);
}
//输入T,输出R的函数
public static int sumF(int a,Function<Integer,Integer> f){
return f.apply(a);
}
//断言
public static boolean predicate(int a,Predicate<Integer> p){
return p.test(a);
}
public static void main(String[] args) {
System.out.println(sumDef(2,6,(x,y)->{
return x+y;
}));
System.out.println(sumU(5,x->{
return x+10;
}));
System.out.println(sumB(5,6,(x,y)->{
return x+y;
}));
System.out.println(sumS(()->{
return 99;
}));
sumC(2,(x)->{
System.out.println(x+10);
});
System.out.println(sumF(2,t->{
return t+9;
}));
System.out.println(predicate(2,t->{
return t>1;
}));
}
}