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

com.moon.core.util.function.ThrowingBiFunction Maven / Gradle / Ivy

package com.moon.core.util.function;

import java.util.Objects;

/**
 * @author moonsky
 * @see java.util.function.Function
 */
@FunctionalInterface
public interface ThrowingBiFunction {

    /**
     * 处理两个数据,并返回结果
     *
     * @param value1 参数
     * @param value2 参数
     *
     * @return 返回值
     *
     * @throws Throwable 异常
     */
    R apply(T value1, O value2) throws Throwable;

    /**
     * 应用并返回,如果异常,将包装成非检查异常抛出
     *
     * @param value1 参数
     * @param value2 参数
     *
     * @return 返回值
     */
    default R applyWithUnchecked(T value1, O value2) {
        try {
            return apply(value1, value2);
        } catch (RuntimeException | Error e) {
            throw e;
        } catch (Throwable t) {
            throw new IllegalStateException("Executor error.", t);
        }
    }

    /**
     * 返回值不能是 null
     *
     * @param value1 参数
     * @param value2 参数
     *
     * @return 执行结束的值
     */
    default R requireApply(T value1, O value2) {
        return Objects.requireNonNull(applyWithUnchecked(value1, value2));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy