
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 super R, ? extends W> 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