妙用Java 8中的 Function接口 消灭if…else(非常新颖的写法)
链接: 参考地址
抛异常接口
@FunctionalInterface
public interface ThrowExceptionFunction {
/**
* 抛出异常信息
*
* @param message 异常信息
* @return void
**/
void throwMessage(String message);
}
If , else 分支操作接口定义
@FunctionalInterface
public interface BranchHandle {
/**
* 分支操作
*
* @param trueHandle 为true时要进行的操作
* @param falseHandle 为false时要进行的操作
* @return void
**/
void trueOrFalseHandle(Runnable trueHandle, Runnable falseHandle);
}
工具类实现接口
import org.junit.platform.commons.util.StringUtils;
public class VUtils {
/**
* 如果参数为true抛出异常
*
* @param b
* @return com.example.demo.func.ThrowExceptionFunction
**/
public static ThrowExceptionFunction isTure(boolean b) {
return (errorMessage) -> {
if (!b) {
throw new RuntimeException(errorMessage);
}
};
}
/**
* 参数为true或false时,分别进行不同的操作
*
* @param b
* @return com.example.demo.func.BranchHandle
**/
public static BranchHandle isTrueOrFalse(boolean b) {
return (trueHandle, falseHandle) -> {
if (b) {
trueHandle.run();
} else {
falseHandle.run();
}
};
}
}
测试类调用
public static void main(String[] args) {
boolean flag = true;
VUtils.isTrueOrFalse(flag)
.trueOrFalseHandle(
() -> {
System.out.println("----正常----");
System.out.println("接口调用成功!");
}, () -> {
VUtils.isTure(flag).throwMessage("操作失败,请联系管理员!!");
}
);
}
-自定义判断是否null值处理
接口定义
import java.util.function.Consumer;
/**
* 空值与非空值分支处理
*/
public interface PresentOrElseHandler<T extends Object> {
/**
* 值不为空时执行消费操作
* 值为空时执行其他的操作
*
* @param action 值不为空时,执行的消费操作
* @param emptyAction 值为空时,执行的操作
* @return void
**/
boolean presentOrElseHandle(Consumer<? super T> action, Runnable emptyAction);
}
工具类调用此方法
null值返回true,否则为false
/**
* 参数为true或false时,分别进行不同的操作
*
* @param str
* @return com.example.demo.func.BranchHandle
**/
public static PresentOrElseHandler<?> isBlank(String str) {
return (consumer, runnable) -> {
if (StringUtils.isBlank(str)) {
runnable.run();
return true;
} else {
consumer.accept(str);
return false;
}
};
}
测试类
public static void main(String[] args) {
boolean flag = true;
String str = "";
VUtils.isTrueOrFalse(VUtils.isBlank(str)
.presentOrElseHandle(
System.out::println, () -> {
return;
}
))
.trueOrFalseHandle(
() -> {
System.out.println("----正常----");
System.out.println("接口调用成功!");
}, () -> {
VUtils.isTure(flag).throwMessage("操作失败,请联系管理员!!");
}
);
}
测试结果