wtf.metio.memoization.jool.Function10Memoizer Maven / Gradle / Ivy
/*
* SPDX-FileCopyrightText: The memoization.java Authors
* SPDX-License-Identifier: 0BSD
*/
package wtf.metio.memoization.jool;
import org.jooq.lambda.function.Function10;
import wtf.metio.memoization.core.AbstractMemoizer;
import java.util.concurrent.ConcurrentMap;
import static java.util.Objects.requireNonNull;
final class Function10Memoizer
extends AbstractMemoizer
implements Function10 {
private final Function10 keyFunction;
private final Function10 function;
Function10Memoizer(
final ConcurrentMap cache,
final Function10 keyFunction,
final Function10 function) {
super(cache);
this.keyFunction = requireNonNull(keyFunction, "Provide a key function.");
this.function = requireNonNull(function,
"Cannot memoize a NULL Function10 - provide an actual Function10 to fix this.");
}
@Override
public OUTPUT apply(final TYPE1 v1, final TYPE2 v2, final TYPE3 v3, final TYPE4 v4, final TYPE5 v5, final TYPE6 v6, final TYPE7 v7, final TYPE8 v8, final TYPE9 v9, final TYPE10 v10) {
return computeIfAbsent(keyFunction.apply(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10),
key -> function.apply(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy