一、简化通过if-else判断异常
1、定义一个抛出异常信息接口
public interface ThrowExceptionFunction {
/**
* 抛出异常信息
*
* @param message 异常信息
* @return void
**/
void throwMessage(String message);
}
2、定义一个工具类BranchUtils调用接口
public class BranchUtils {
/**
* 如果参数为true抛出异常
**/
public static ThrowExceptionFunction success(boolean b){
return (errorMessage) -> {
if (!b){
throw new RuntimeException(errorMessage);
}
};
}
}
3、测试效果
@Test
void handleException()
{
//false:抛出异常,true:正常
BranchUtils.success(true).throwMessage("抛出异常");
}
二:简化通过if-else判断分支(利用Runnable接口,无参数无返回值)
1、定义一个分支接口
public interface BranchHandle {
/**
* 分支操作
*
* @param trueHandle 为true时要进行的操作
* @param falseHandle 为false时要进行的操作
* @return void
**/
void trueOrFalseHandle(Runnable trueHandle, Runnable falseHandle);
}
2、工具类BranchUtils调用接口
public class BranchUtils {
/**
* 如果参数为true抛出异常
**/
public static ThrowExceptionFunction success(boolean b){
return (errorMessage) -> {
if (!b){
throw new RuntimeException(errorMessage);
}
};
}
/**
* 参数为true或false时,分别进行不同的操作
* @param b
**/
public static BranchHandle isSuccessOrFail(boolean b){
return (success, fail) -> {
if (b){
success.run();
} else {
fail.run();
}
};
}
}
3、测试效果
@Test
void handleBranch()
{
//true,执行前段,false,执行后段
BranchUtils.isSuccessOrFail(true).trueOrFalseHandle(()-> System.out.println("true,成功执行"),()-> System.out.println("false,失败执行"));
}
三:
1、创建一个名为PresentOrElseHandler的函数式接口,接口的参数一个为Consumer接口。一个为Runnable,分别代表值不为空时执行消费操作和值为空时执行的其他操作。
public interface PresentOrElseHandler<T extends Object> {
/**
*
* @param action 值不为空时,执行的消费操作
* @param emptyAction 值为空时,执行的操作
* @return void
**/
void presentOrElseHandle(Consumer<? super T> action, Runnable emptyAction);
}
2、工具类BranchUtils调用接口
public class BranchUtils {
/**
* 如果参数为true抛出异常
**/
public static ThrowExceptionFunction success(boolean b){
return (errorMessage) -> {
if (!b){
throw new RuntimeException(errorMessage);
}
};
}
/**
* 参数为true或false时,分别进行不同的操作
* @param b
**/
public static BranchHandle isSuccessOrFail(boolean b){
return (success, fail) -> {
if (b){
success.run();
} else {
fail.run();
}
};
}
/**
* 判断字符串是否为空
**/
public static PresentOrElseHandler<?> isBlankOrNoBlank(String str){
return (consumer, runnable) -> {
if (str == null || str.length() == 0){
runnable.run();
} else {
consumer.accept(str);
}
};
}
}
3、测试
@Test
void handleString()
{
//根据字符串是否为空执行相应操作
BranchUtils.isBlankOrNoBlank("你好").presentOrElseHandle((Consumer<Object>) o -> System.out.println((String) o), () -> System.out.println("空字符串"));
}