J'ai le code ci-dessous,
J'ai un énum et une variable de BigInteger. Veuillez trouver la condition If utilisée p> comment fixer l'avertissement? P> p>
3 Réponses :
if ((enumCode == EnumCode.Closed) == (null == amount)) {
return false;
}
Si Vous devez vérifier s'il est différent de Enumcode code> est null code>, la condition énumcode! = Enumcode.closed code> est vrai.
Donc, le 2e si code> condition inclut le 3ème. Enumcode.closed code> et s'il n'est pas null. P> if (enumCode == EnumCode.Closed && null == amount) {
return false;
}
if (enumCode != null && enumCode != EnumCode.Closed && null != amount) {
return false;
}
if (null == enumCode && null != amount) {
return false;
}
expliqué logiquement, une fois que vous avez atteint la 3ème condition, la quantité variable ne sera pas égale à null, donc null! = montant em> résulterait faux em>. Deuxièmement, null == Enumcode em> résultera également de faux em> parce que vous l'avez déjà vérifié dans la deuxième si la déclaration em>. De plus, dans votre seconde si la déclaration em>, lorsque vous dites, null! = Enumcode.Closed; em> les valeurs possibles pour que la condition soit vraie inclut {null, ouverte, aucun} em>. Cela signifie que vous n'avez pas besoin de vérifier à nouveau avec null == Enumcode em> car il sera faux de toute façon. Selon l'algèbre booléenne, faux && faux est faux em>. Pour résoudre le problème, vous supprimez simplement le troisième si, car ils sont inclus dans votre précédent si. public enum EnumCode {
Open,
Closed,
None
}
private boolean TEST(final ConstraintValidatorContext constraintValidatorContext, final BigInteger amount, final EnumCode enumCode) {
if (enumCode == EnumCode.Closed && null == amount) {
//error message1
return false;
}
if (enumCode != EnumCode.Closed && null != amount) {
//error message2
return false;
}
return true;
}
"Comment réparer l'avertissement?" Supprimer que si la déclaration.
EnumCode! = Enumcode.Closed Code> est true siEnumcode == null code>. 2e si l'état inclut le 3ème si condition@jhamon: merci. On dirait que j'ai fait une erreur très stupide
Lorsque vous atteignez la 3ème condition, le montant ne sera pas égal à null si null! = Le montant résulterait de faux. Deuxièmement, null == Enumcode entraînera également une fausse car vous l'avez déjà vérifiée dans la deuxième déclaration. Dans votre seconde si la déclaration, lorsque vous dites, NULL! = ENUMCODE.CLOSED; Les valeurs [valeurs possibles pour que la condition soient vraies incluent {null, ouverte, aucun}. Cela signifie que vous n'avez pas besoin de vérifier plus NULL == Enumcode car ce sera faux. Selon l'algèbre booléenne, false && false est faux. Vous supprimez simplement le troisième si, car ils sont inclus dans votre précédent si.