All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.moon.core.lang.LangUtil Maven / Gradle / Ivy

package com.moon.core.lang;

import com.moon.core.util.OptionalUtil;
import com.moon.core.util.function.*;

import java.util.function.Supplier;

import static com.moon.core.lang.ThrowUtil.noInstanceError;
import static com.moon.core.lang.ThrowUtil.runtime;

/**
 * @author moonsky
 */
public final class LangUtil {

    private LangUtil() { noInstanceError(); }

    /**
     * 忽略检查异常执行
     *
     * @param run
     */
    public static void run(ThrowingRunnable run) {
        try {
            run.run();
        } catch (Throwable t) {
            runtime(t);
        }
    }

    /**
     * 忽略检查异常获取一个值
     *
     * @param supplier
     * @param 
     *
     * @return
     */
    public static  T get(ThrowingSupplier supplier) {
        try {
            return supplier.get();
        } catch (Throwable t) {
            return runtime(t);
        }
    }

    public static  T getOrElse(ThrowingSupplier supplier, Supplier defaultSupplier) {
        try {
            return supplier.get();
        } catch (Throwable t) {
            return defaultSupplier.get();
        }
    }

    public static  T getOrDefault(ThrowingSupplier supplier, T defaultValue) {
        try {
            return OptionalUtil.orElse(supplier.get(), defaultValue);
        } catch (Throwable t) {
            return defaultValue;
        }
    }

    /**
     * 忽略检查异常消费
     *
     * @param value
     * @param consumer
     * @param 
     */
    public static  void accept(T value, ThrowingConsumer consumer) {
        try {
            consumer.accept(value);
        } catch (Throwable t) {
            runtime(t);
        }
    }

    /**
     * 忽略检查异常转换
     *
     * @param value
     * @param function
     * @param 
     * @param 
     *
     * @return
     */
    public static  R apply(T value, ThrowingFunction function) {
        try {
            return function.apply(value);
        } catch (Throwable t) {
            return runtime(t);
        }
    }

    /**
     * 忽略检查异常转换
     *
     * @param v1
     * @param v2
     * @param function
     * @param 
     * @param 
     * @param 
     *
     * @return
     */
    public static  R applyBi(T v1, O v2, ThrowingBiFunction function) {
        try {
            return function.apply(v1, v2);
        } catch (Throwable t) {
            return runtime(t);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy