Function接口

抛出异常处理

  1. /**
  2. * @Classname ThrowExceptionFunction
  3. * @Author 6b92d6
  4. * @Description 抛异常接口
  5. */
  6. @FunctionalInterface
  7. public interface ThrowExceptionFunction {
  8. /**
  9. * 抛出异常信息
  10. * @param message 异常信息
  11. * @return void
  12. */
  13. void throwException(String message);
  14. }

进行分支操作

  1. /**
  2. * @Classname BranchHandle
  3. * @Author 6b92d6
  4. * @Description 分支处理接口
  5. */
  6. @FunctionalInterface
  7. public interface BranchHandle {
  8. /**
  9. * 分支操作
  10. * @param trueHandle 为true时要进行操作
  11. * @param falseHandle 为false时要进行操作
  12. * return void
  13. */
  14. void trueOrFalseHandle(Runnable trueHandle, Runnable falseHandle);
  15. }

空值与非空值

  1. import java.util.function.Consumer;
  2. /**
  3. * @Classname PresentOrElseHandler
  4. * @Author 6b92d6
  5. * @Description 空值与非空值分支处理
  6. */
  7. public interface PresentOrElseHandler<T extends Object> {
  8. /**
  9. * 值不为空时执行消费操作
  10. * 值为空时执行其他的操作
  11. *
  12. * @param action 值不为空时,执行的消费操作
  13. * @param emptyAction 值不为空时,执行的消费操作
  14. */
  15. void presentOrElseHandle(Consumer<? super T> action, Runnable emptyAction);
  16. }

VUtils工具类

  1. /**
  2. * @Classname VUtils
  3. * @Author 6b92d6
  4. * @Description 工具类
  5. */
  6. public class VUtils {
  7. /**
  8. * 如果参数为true抛出异常
  9. * @param b
  10. * @return
  11. */
  12. public static ThrowExceptionFunction isTrue(boolean b) {
  13. return (errorMessage) -> {
  14. if (b) {
  15. throw new RuntimeException(errorMessage);
  16. }
  17. };
  18. }
  19. /**
  20. * 参数为true或false时,分别进行不同的操作
  21. * @param b
  22. * @return BranchHandle
  23. */
  24. public static BranchHandle isTureOrFalse(boolean b) {
  25. return (trueHandle, falseHandle) -> {
  26. if (b) {
  27. trueHandle.run();
  28. } else {
  29. falseHandle.run();
  30. }
  31. };
  32. }
  33. /**
  34. * 存在参数值
  35. *
  36. * @param str
  37. * @return
  38. */
  39. public static PresentOrElseHandler<?> isBlankOrNoBlank(String str) {
  40. return (consumer,runable) -> {
  41. if (str == null || str.length() == 0) {
  42. runable.run();
  43. } else {
  44. consumer.accept(str);
  45. }
  46. };
  47. }
  48. }

测试

  1. import org.junit.Test;
  2. /**
  3. * @Classname TestOne
  4. * @Author 6b92d6
  5. * @Description
  6. */
  7. public class TestOne {
  8. /**
  9. * 当出入的参数为true时抛出异常
  10. */
  11. @Test
  12. public void isTrue(){
  13. VUtils.isTrue(true).throwException("👴要抛出异常了");
  14. }
  15. /**
  16. * 如果存在值执行消费操作,否则执行基于空的操作
  17. */
  18. @Test
  19. public void isTrueOrFalse() {
  20. VUtils.isTureOrFalse(false).trueOrFalseHandle(() -> {
  21. System.out.println("true,👴要秀了");
  22. },() -> {
  23. System.out.println("false,👴不行");
  24. });
  25. }
  26. @Test
  27. public void isBlankOrNoBlank() {
  28. VUtils.isBlankOrNoBlank("hello")
  29. .presentOrElseHandle(System.out::println, () -> {
  30. System.out.println("空字符串");
  31. });
  32. }
  33. }

原文链接:https://juejin.cn/post/7011435192803917831