J'ai écrit le code ci-dessous pour vérifier certaines conditions.
/**
* Returns true if any of the dose detail is an x
* @return boolean
*/
public <DD extends BD<DI>, DI extends BI> boolean Y(final Collection<DD> dds) {
return dds.stream().anyMatch(dd -> dd.M().K());
}
mais cette méthode a des risques de dds, qui sont nuls. Je dois retourner false est dd également nul. comment peut-on modifier cette méthode en utilisant java 8 en null safe?
3 Réponses :
Cela pourrait être aussi simple que
public <DD extends BD<DI>, DI extends BI> boolean Y(final Collection<DD> dds) {
return dds == null ? false : dds.stream().anyMatch(dd -> dd.M().K());
}
Vous n'avez jamais besoin de combiner littéralement true ou false avec une autre expression booléenne ; il y a toujours une alternative sans elle. Ici, il suffit de retourner dds! = Null && dds.stream (). AnyMatch (dd -> dd.M (). K ());
Vous pouvez également l'envelopper autour d'un Facultatif comme:
public <DD extends BD<DI>, DI extends BI> boolean Y(final Collection<DD> dds) {
return Optional.ofNullable(dds)
.filter(d -> d.stream().anyMatch(dd -> dd.M().K()))
.isPresent();
}
Ou vous pouvez faire comme ça. Plus ou plus de la même manière
return dds != null && dds.stream().anyMatch(dd -> dd.M().K());