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.
isValue
est-il un booléen primitif? Si c'est le cas, il ne sera jamais nul. De plus, le ternaire esta? b: c
Pour développer ce que @Compass a dit, les types primitifs ne peuvent pas être nuls, uniquement des objets tels que
Boolean
ouString
, pasint
ouboolean
. Les types primitifs héritent des valeurs par défaut, par exempleint
est 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