使用注解@FunctionalInterface标识,并且只包含一个抽象方法的接口是函数式接口。函数式接口主要分为Supplier供给型函数、Consumer消费型函数、Runnable无参无返回型函数和Function有参有返回型函数
1、接口类
//1、
@FunctionalInterface
public interface TestException {
void throwMessage(String message);
}
//2、
@FunctionalInterface
public interface TestConsumer {
/**
* 值不为空时执行消费操作
* 值为空时执行其他的操作
*
* @return void
**/
void presentOrElseHandle(Consumer action, Runnable emptyAction);
}
//3、
@FunctionalInterface
public interface TestRunable {
/**
* Runable类型
*
* @param trueHandle 为true时要进行的操作
* @param falseHandle 为false时要进行的操作
* @return void
**/
void trueOrFalseHandle(Runnable trueHandle, Runnable falseHandle);
}
2、工具类
public class VUtils {
public static TestConsumer presentOrElseHandle(boolean flag){
return (consumer,handler) -> {
if (flag){
consumer.accept(flag);
}else {
handler.run();
}
};
}
public static TestException isTrue(boolean flag){
return (errorMsg) -> {
if (flag){
throw new RuntimeException(errorMsg);
}
};
}
public static TestRunable trueOrFalse(boolean flag){
return (trueHandle,falseHandle) -> {
if (flag){
trueHandle.run();
}else {
falseHandle.run();
}
};
}
}
3、测试类
public class TestFun {
public static void main(String[] args) {
//1、
VUtils.isTrue(true).throwMessage("c");
//2、
VUtils.trueOrFalse(false).trueOrFalseHandle(()->{
System.out.println("==true==");
},()->{
System.out.println("==false==");
});
//3、
VUtils.presentOrElseHandle(false).presentOrElseHandle(System.out::println,()->{
System.out.println("false");
});
}
}