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());