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

org.jruby.util.func.FunctionOneOrTwoOrThree Maven / Gradle / Ivy

package org.jruby.util.func;

import java.util.function.BiFunction;
import java.util.function.Function;

/**
 * An aggregate interface for {@link Function} and {@link BiFunction} that properly replaces the default
 * {@link #andThen(Function)} for both superinterfaces.
 *
 * @param  first argument type for apply
 * @param  second argument type for apply
 * @param  third argument type for apply
 * @param  return value type for apply
 */
public interface FunctionOneOrTwoOrThree extends Function, BiFunction, TriFunction {
    @Override
    default  FunctionOneOrTwoOrThree andThen(Function after) {
        return new FunctionOneOrTwoOrThree() {
            @Override
            public W apply(final T t, final U u, final V v) {
                return after.apply(FunctionOneOrTwoOrThree.this.apply(t, u, v));
            }

            @Override
            public W apply(final T t, final U u) {
                return after.apply(FunctionOneOrTwoOrThree.this.apply(t, u));
            }

            @Override
            public W apply(final T t) {
                return after.apply(FunctionOneOrTwoOrThree.this.apply(t));
            }
        };
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy