package com.test.fun;
/**
* @FunctionalInterface 注解可以检测接口是否为函数式接口
* 如果不是函数式接口,则编译失败
* @param
*/
@FunctionalInterface
public interface Compute
public int add(int a , int b );
// public int add(int a , int b );
}
2)函数式接口调用-1)匿名函数方式 - 2)lambda方式
public class Test1 {
public static int add(int a,int b, Compute
// compute.add()
return compute.add(a,b) ;
}
public static void main(String[] args) {
test2() ;
}
//传统匿名类方式
public static void test2( ) {
int i = 1 ;
int j =2 ;
add( i , j , new Compute
@Override
public int add(int a, int b) {
return a+b;
}
});
}
//使用过lamba表达式进行参数调用处理
public static void test1() {
int i = 1 ;
int j =2 ;
add( i , j ,(a,b)->{
return a+b ;
});
}
}
好处:使用lambda方式使调用更加的简洁
个人理解:
1)在函数式接口的调用的时候,如果传递了lambda则函数式接口内部调用了lambda表达式,最终使数据得以处理
2)lambda相当于一个函数,有输入和输出,当然输入和输出也可以是空的
3)那么函数式接口在什么时候使用呢?
当我们需要封装一段逻辑,需要使用lamdba处理的时候,那么我们就创建一个函数式接口作为参数,这个时候就可以传递lambda来处理逻辑了
三、 java提供的内置函数式接口及其具体使用详解
1) java.util.function.Supplier
主要作用:接收一个lambda执行业务逻辑,返回对应的数据类型T(无输入,只有指定类型的输出)
例子:
public static String test3(Supplier
return supplier.get() ;
}
public static void main(String[] args) {
String str = test3(()->{
return "测试supplier接口" ;
}) ;
System.out.println( str );
}
2)java.util.function.Consumer
主要作用:接收一个lambda执行业务逻辑,输入的数据类型为T(有输入,无输出)
public static void test3(String t , Consumer
consumer.accept(t); ;
}
public static void main(String[] args) {
test3("测试",(str)->{
System.out.println( str );
}) ;
}
3)java.util.function.Predicate
作用:接收一个lambda执行业务逻辑,对某种数据类型的数据(传入的参数)进行判断,结果返回一个boolean值()
例子:
//对传入的参数t进行逻辑判断,返回true或者false
public static boolean test3(int t , Predicate
return predicate.test(t);
}
public static void main(String[] args) {
test3(10 ,(i)->{
if(i>5){
return true;
}else{
return false;
}
}) ;
}
4)java.util.function.Function
作用:接收一个lambda执行业务逻辑,对某种数据类型的数据进行处理,返回固定的数据类型(有输入,有输出)
例子:
public static Integer test4(String str, Function
return function.apply(str) ;
}
public static void main(String[] args) {
int k = test4("10" ,(str)->{
return Integer.parseInt(str) ;
}) ;
System.out.println( k );
}
无法在 Windows 10/11 中删除打印机?如何强制删除它
刀剑如梦配过哪部电视剧的插曲