solch eine Sache
Häufig verwendete Methode
Arrays.asList(expects...).contains(target)
Abgesehen von dem Tsukkomi, dass es in Ordnung ist
MultipleConditionMatcher.java
//Lombok erforderlich.jar
import java.util.Arrays;
import lombok.NonNull;
/**
*Beurteilung mehrerer OP-Bedingungen
* @param <T>Beurteilungszieltyp
*/
public class MultipleConditionMatcher<T> {
/**Urteilsziel*/
@NonNull
private T target;
/**
*Konstrukteur
* @param target Beurteilungsziel
*/
public MultipleConditionMatcher(@NonNull T target) {
this.target = target;
}
/**
*Beurteilung mehrerer OP-Bedingungen
* @param erwartet Urteilsbedingungen
* @return Wenn eine der Urteilsbedingungen erfüllt ist{code true}
*/
@SuppressWarnings("unchecked")
public boolean in(@NonNull final T... expects) {
return Arrays.stream(expects).anyMatch(target::equals);
}
/**
*Beurteilung mehrerer OP-Bedingungen
* @param erwartet Urteilsbedingungen
* @return Wenn eine der Urteilsbedingungen erfüllt ist{code true}
*/
@SuppressWarnings("unchecked")
public boolean or(@NonNull final T... expects) {
return in(expects);
}
}
Beispielcode
// String
System.out.println(new MultipleConditionMatcher<String>("Hoge").in("Hoge", "Fuga"));
// Integer
System.out.println(new MultipleConditionMatcher<Integer>(Integer.valueOf(1)).or(Integer.valueOf(0), Integer.valueOf(Integer.MAX_VALUE));
Ausführungsergebnis
true
false
** (Hinzugefügt am 01.11.2018) **
Ich habe eine Version erstellt, die mit Predicate # Or ()
verbunden ist.
MultipleConditionMatcher.java
//Lombok erforderlich.jar
import java.util.function.Predicate;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.NonNull;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class MultipleConditionMatcher {
/**
*Beurteilung mehrerer OP-Bedingungen
* @param <T>Beurteilungszieltyp
* @param target Beurteilungsziel
* @param erwartet Urteilsbedingungen
* @return Wenn eine der Urteilsbedingungen erfüllt ist{code true}
*/
@SuppressWarnings("unchecked")
public static <T> boolean in(final T target, final T... expects) {
if (expects.length == 0) {
return false;
}
Predicate<T> chainedExpect = null;
for (final T expect : expects) {
if (chainedExpect == null) {
chainedExpect = expect::equals;
} else {
chainedExpect.or(expect::equals);
}
}
return chainedExpect.test(target);
}
/**
*Beurteilung mehrerer OP-Bedingungen
* @param <T>Beurteilungszieltyp
* @param target Beurteilungsziel
* @param erwartet Urteilsbedingungen
* @return Wenn eine der Urteilsbedingungen erfüllt ist{code true}
*/
@SuppressWarnings("unchecked")
public static <T> boolean or(final T target, final T... expects) {
return in(target, expects);
}
}
Beispielcode
// String
System.out.println(MultipleConditionMatcher.in("Hoge", "Hoge", "Fuga"));
// Integer(boxed int)
System.out.println(MultipleConditionMatcher.or(1, 0, Integer.MAX_VALUE));
Ausführungsergebnis
true
false
Recommended Posts