Je souhaite ajouter une vérification nulle à mon opérateur ternaire qui vérifie une Boolean isValue :
public String getValue() {
return isValue ? "T" : "F";
}
Ma tâche est:
Que faire si le booléen (objet) renvoie null? Ajoutez une vérification booléenne et retournez "" (chaîne vide au cas où elle serait nulle).
Notez que isValue est un Boolean , pas boolean.
3 Réponses :
Un opérateur terniaire a la syntaxe suivante:
final String result;
if (isValue == null) {
result = "";
} else if (isValue) {
result = "T";
} else {
result = "F";
}
return result;
Où trueValue est renvoyé lorsque l'expression est évaluée à true et falseValue quand ce n'est pas le cas.
Si vous voulez ajouter une vérification nulle de telle sorte que lorsqu'un Boolean isValue est null alors la méthode retourne "" , ce n'est pas très lisible avec un opérateur terniaire:
String getValue() {
return isValue == null ? "" : (isValue ? "T" : "F");
}
Une instruction comme celle-là pourrait être mieux exprimé avec des instructions if . Le corps de la méthode deviendrait
result = expression ? trueValue : falseValue;
public String getValue () {if (isValue! = null) {return isValue? "T"? "F" ; } else {return ""; }}
Vous utilisez la syntaxe incorrecte pour l'opérateur ternaire comme indiqué dans les commentaires qui devrait être isValue? "T": "F" . Je suggère d'utiliser une solution qui mélange l'opérateur ternaire avec une instruction if standard pour vérifier une valeur null .
Voici à quoi ressemble cette solution: p >
public String getValue() {
if (isValue == null) {
return "";
}
return isValue ? "T" : "F";
}
Cela vérifiera null avant toute autre chose et renverra une chaîne vide si la valeur est null code >. Sinon, il vérifiera la valeur normalement et retournera la valeur String de T ou F pour true ou false respectivement.
Merci, j'ai ajouté mon commentaire pour la réponse ci-dessus qui correspond à la vôtre @Nexevis
Vous pourriez faire
return Optional.ofNullable(isValue).map(t -> t ? "T": "F").orElse("");
J'adore la propreté de cela.
isValueest-il un booléen primitif? Si c'est le cas, il ne sera jamais nul. De plus, le ternaire esta? b: cPour développer ce que @Compass a dit, les types primitifs ne peuvent pas être nuls, uniquement des objets tels que
BooleanouString, pasintouboolean. Les types primitifs héritent des valeurs par défaut, par exempleintest par défaut0.@Nexevis c'est un objet (booléen)
@learn N Rock Je vous recommande de modifier votre question avec ces informations, vous utilisez spécifiquement le terme
boolean code> qui implique le type primitif.Merci @Nexev est mon erreur