DoubleCallable.java

package space.sunqian.common.base.function.callable;

import java.util.concurrent.Callable;

/**
 * A {@link Callable} extension interface that returns {@code double} via {@link #callAsDouble()}, and its default
 * behavior of {@link #call()} is to call {@link #callAsDouble()} and return its result.
 *
 * @author sunqian
 */
@FunctionalInterface
public interface DoubleCallable extends Callable<Double> {

    /**
     * Computes a result as {@code double}, or throws an exception if unable to do so.
     *
     * @return computed result
     * @throws Exception if unable to compute a result
     */
    double callAsDouble() throws Exception;

    @Override
    default Double call() throws Exception {
        return callAsDouble();
    }
}