Formulaire abrégé pour l'instruction Java if
Je sais qu'il existe un moyen d'écrire une instruction Java if
sous forme courte.
if (city.getName() != null) {
name = city.getName();
} else {
name="N/A";
}
Quelqu'un sait-il comment écrire le formulaire abrégé pour les 5 lignes ci-dessus en une seule ligne?
15 answers
Utiliser l'opérateur ternaire:
name = ((city.getName() == null) ? "N/A" : city.getName());
Je pense que vous avez les conditions à l'envers - si c'est null, vous voulez que la valeur soit "N/A".
Que faire si city est null? Votre code * frappe le lit dans ce cas. J'ajouterais un autre chèque:
name = ((city == null) || (city.getName() == null) ? "N/A" : city.getName());
La façon de le faire est avec l'opérateur ternaire:
name = city.getName() == null ? city.getName() : "N/A"
Cependant, je crois que vous avez une faute de frappe dans votre code ci-dessus, et vous voulez dire:
if (city.getName() != null) ...
Pour éviter d'appeler .getName()
deux fois, j'utiliserais
name = city.getName();
if (name == null) name = "N/A";
Le? : opérateur en Java
En Java, vous pouvez écrire:
if (a > b) {
max = a;
}
else {
max = b;
}
Définir une seule variable sur l'un des deux états en fonction d'une seule condition est une utilisation si courante de if-else qu'un raccourci a été conçu pour elle, l'opérateur conditionnel, ?:. En utilisant l'opérateur conditionnel, vous pouvez réécrire l'exemple ci-dessus en une seule ligne comme ceci:
max = (a > b) ? a : b;
(a > b) ? a : b; est une expression qui retourne une valeur sur deux, a ou b. La condition (a > b), est testé. Si elle est vraie, la première valeur, a, est renvoyée. Si elle est fausse, la deuxième valeur, b, est renvoyé. Quelle que soit la valeur retournée dépend du test conditionnel, a > b. La condition peut être n'importe quelle expression qui renvoie une valeur booléenne.
J'oublie toujours comment utiliser le ?:
opérateur ternaire. Cette réponse supplémentaire est un rappel rapide. C'est un raccourci pour if-then-else
.
myVariable = (testCondition) ? someValue : anotherValue;
Où
-
()
contient leif
-
?
signifiethen
-
:
signifieelse
C'est la même chose que
if (testCondition) {
myVariable = someValue;
} else {
myVariable = anotherValue;
}
Dans java 8:
name = Optional.ofNullable(city.getName()).orElse("N/A")
name = (city.getName() != null) ? city.getName() : "N/A";
Vous pouvez écrire des déclarations if, else if, else
sous forme abrégée. Par exemple:
Boolean isCapital = city.isCapital(); //Object Boolean (not boolean)
String isCapitalName = isCapital == null ? "" : isCapital ? "Capital" : "City";
C'est la forme abrégée de:
Boolean isCapital = city.isCapital();
String isCapitalName;
if(isCapital == null) {
isCapitalName = "";
} else if(isCapital) {
isCapitalName = "Capital";
} else {
isCapitalName = "City";
}
name = ( (city.getName() == null)? "N/A" : city.getName() );
Tout d'Abord la condition (city.getName() == null)
est cochée. Si oui, alors "N/A"
est affecté à name ou simplement name="N/A"
ou bien la valeur de city.getName()
est affectée à name, c'est-à-dire name=city.getName()
.
Choses à regarder ici:
- la condition est entre parenthèses suivie d'un point d'interrogation. C'est pourquoi j'écris
(city.getName() == null)?
. Ici, le point d'interrogation est juste après la condition. Facile à voir / lire / deviner même! - valeur à gauche du deux-points (
:
) et valeur à droite du deux-points (a) la valeur gauche des deux-points est attribuée lorsque la condition est vraie, sinon la valeur droite de deux-points est affectée à la variable.
Voici une référence: http://www.cafeaulait.org/course/week2/43.html
Utiliser l'org.Apache.commun.lang3.StringUtils:
name = StringUtils.defaultString(city.getName(), "N/A");
Simple et clair:
String manType = hasMoney() ? "rich" : "poor";
Version longue:
String manType;
if (hasMoney()) {
manType = "rich";
} else {
manType = "poor";
}
, Ou comment je l'utilise pour être clair pour les autres lecteurs de code:
String manType = "poor";
if (hasMoney())
manType = "rich";
Vous pouvez utiliser l'opérateur ternaire en java.
Syntaxe:
Condition ? Block 1 : Block 2
Donc, dans votre code, vous pouvez le faire comme ceci,
name = ((city.getName() == null) ? "N/A" : city.getName());
Pour plus d'informations vous pouvez vous référer ce ressource.
, Vous pouvez supprimer crochets et sauts de ligne.
if (city.getName() != null) name = city.getName(); else name = "N/A";
, Vous pouvez utiliser ?: opérateurs en java.
Syntaxe:
Variable = Condition ? BlockTrue : BlockElse;
Donc, dans votre code, vous pouvez faire comme ceci:
name = city.getName() == null ? "N/A" : city.getName();
Assigner le résultat de la condition pour Booléen
boolean hasName = city.getName() != null;
EXTRA: pour les curieux
Dans certaines langues basées sur JAVA
comme Groovy
, vous pouvez utilisez cette syntaxe:
name = city.getName() ?: "N/A";
Vous pouvez le faire dans Groovy
parce que si vous demandez cette condition:
if (city.getName()) {
//returns true if city.getName() != null
} else {
//returns false if city.getName() == null
}
Donc l'opérateur ?:
affecte la valeur renvoyée par la condition. Dans ce cas, la valeur de city.getName()
, si ce n'est pas null
.
Voici un code de ligne
name = (city.getName() != null) ? city.getName() : "N/A";
Voici un exemple de fonctionnement, exécutez le code ci-dessous dans le fichier js et comprenez le résultat. Ce ("Data" != null)
est une condition comme nous le faisons dans la normale if()
et "Data"
est une déclaration lorsque cette condition est devenue vraie. ce " : "
agit comme else et "N/A"
est une instruction pour la condition else. Espérons que cela vous aide à comprendre la logique.
name = ("Data" != null) ? "Data" : "N/A";
console.log(name);
name = city.getName()!=null?city.getName():"N/A"