1 package net.bmahe.genetics4j.core.spec.combination;
2
3 import java.util.Arrays;
4 import java.util.List;
5 import java.util.Objects;
6
7 import org.immutables.value.Value;
8
9 @Value.Immutable
10 public abstract class MultiCombinations implements CombinationPolicy {
11
12 @Value.Parameter
13 public abstract List<CombinationPolicy> combinationPolicies();
14
15 @Value.Check
16 protected void check() {
17 Objects.requireNonNull(combinationPolicies());
18 }
19
20 public static MultiCombinations of(final List<CombinationPolicy> combinationPolicies) {
21 return ImmutableMultiCombinations.of(combinationPolicies);
22 }
23
24 public static MultiCombinations of(final CombinationPolicy... combinationPolicies) {
25 return ImmutableMultiCombinations.of(Arrays.asList(combinationPolicies));
26 }
27 }