xiejun
2024-11-01 80b6cbfc9c861469146318d0b3dd5f8b8b525b8a
Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/support/Try.java
对比新文件
@@ -0,0 +1,88 @@
package org.springblade.core.tool.support;
import org.springblade.core.tool.utils.Exceptions;
import org.springframework.lang.Nullable;
import java.util.Objects;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
/**
 * Lambda 鍙楁寮傚父澶勭悊
 * https://segmentfault.com/a/1190000007832130
 *
 * @author Chill
 */
public class Try {
   public static <T, R> Function<T, R> of(UncheckedFunction<T, R> mapper) {
      Objects.requireNonNull(mapper);
      return t -> {
         try {
            return mapper.apply(t);
         } catch (Exception e) {
            throw Exceptions.unchecked(e);
         }
      };
   }
   public static <T> Consumer<T> of(UncheckedConsumer<T> mapper) {
      Objects.requireNonNull(mapper);
      return t -> {
         try {
            mapper.accept(t);
         } catch (Exception e) {
            throw Exceptions.unchecked(e);
         }
      };
   }
   public static <T> Supplier<T> of(UncheckedSupplier<T> mapper) {
      Objects.requireNonNull(mapper);
      return () -> {
         try {
            return mapper.get();
         } catch (Exception e) {
            throw Exceptions.unchecked(e);
         }
      };
   }
   @FunctionalInterface
   public interface UncheckedFunction<T, R> {
      /**
       * apply
       *
       * @param t
       * @return
       * @throws Exception
       */
      @Nullable
      R apply(@Nullable T t) throws Exception;
   }
   @FunctionalInterface
   public interface UncheckedConsumer<T> {
      /**
       * accept
       *
       * @param t
       * @throws Exception
       */
      @Nullable
      void accept(@Nullable T t) throws Exception;
   }
   @FunctionalInterface
   public interface UncheckedSupplier<T> {
      /**
       * get
       *
       * @return
       * @throws Exception
       */
      @Nullable
      T get() throws Exception;
   }
}