web-dev-qa-db-fra.com

Forme abrégée pour Java si déclaration

Je sais qu'il existe un moyen d'écrire une instruction Java if sous forme abrégée.

if (city.getName() != null) {
    name = city.getName();
} else {
    name="N/A";
}

Est-ce que quelqu'un sait comment écrire le formulaire abrégé pour les 5 lignes ci-dessus en une seule ligne?

145
Makky

Utilisez 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".

Et si la ville est nulle? Votre code * frappe le lit dans ce cas. J'ajouterais un autre chèque:

name = ((city == null) || (city.getName() == null) ? "N/A" : city.getName());
320
duffymo

La façon de le faire est avec l'opérateur ternaire:

name = city.getName() == null ? city.getName() : "N/A"

Cependant, je pense que vous avez une faute de frappe dans votre code ci-dessus et vous voulez dire:

if (city.getName() != null) ...
22
Sam Goldberg

Pour éviter d'appeler .getName() deux fois, j'utiliserais

name = city.getName();
if (name == null) name = "N/A";
21
Peter Lawrey

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 si-sinon 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 sur une seule ligne, comme ceci:

max = (a > b) ? a : b;

(a> b)? un B; est une expression qui renvoie l'une des deux valeurs, a ou b. La condition (a> b) est testée. Si c'est le cas, la première valeur, a, est renvoyée. S'il est faux, la deuxième valeur, b, est renvoyée. Quelle que soit la valeur renvoyée dépend du test conditionnel, a> b. La condition peut être toute expression qui renvoie une valeur booléenne.

J'oublie toujours comment utiliser l'opérateur ?:ternary . Cette réponse supplémentaire est un rappel rapide. C'est un raccourci pour if-then-else.

myVariable = (testCondition) ? someValue : anotherValue;

  • () contient la if
  • ? signifie then
  • : signifie else

C'est pareil que

if (testCondition) {
    myVariable = someValue;
} else {
    myVariable = anotherValue;
}
13
Suragch

en Java 8:

name = Optional.ofNullable(city.getName()).orElse("N/A")
13
digitebs
name = (city.getName() != null) ? city.getName() : "N/A";
6
shift66

Vous pouvez écrire des instructions 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 une forme courte de:

Boolean isCapital = city.isCapital();
String isCapitalName;
if(isCapital == null) {
    isCapitalName = "";
} else if(isCapital) {
    isCapitalName = "Capital";
} else {
    isCapitalName = "City";
}
6
OctopusSD
name = ( (city.getName() == null)? "N/A" : city.getName() );

tout d'abord la condition (city.getName() == null) est vérifiée. Si oui, alors "N/A" est attribué à name ou simplement name="N/A", sinon la valeur de city.getName() est attribuée à name, c.-à-d. name=city.getName().

Les choses à regarder ici:

  1. 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!
  2. valeur restante de deux points (:) et valeur droite de deux points (a) la valeur restante de deux points est affecté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

3

voici un code de ligne 

name = (city.getName() != null) ? city.getName() : "N/A";

voici un exemple de fonctionnement, lancez le code ci-dessous dans le fichier js et comprenez le résultat. Ce ("Data" != null) est une condition comme nous le faisons dans if() normal et "Data" est une déclaration lorsque cette condition est devenue vraie. ce " : " agit comme sinon et "N/A" est une instruction pour la condition else. J'espère que cela vous aidera à comprendre la logique. 

name = ("Data" != null) ? "Data" : "N/A";

console.log(name);

2
Waqas Qayum

Utilisez org.Apache.commons.lang3.StringUtils:

name = StringUtils.defaultString(city.getName(), "N/A");
2
Paul Rambags

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";
2
Vasile Doe

Vous pouvez supprimer crochets et sauts de ligne .

if (city.getName() != null) name = city.getName(); else name = "N/A";

Vous pouvez utiliser?: operators en Java.

Syntaxe:

Variable = Condition ? BlockTrue : BlockElse;

Donc, dans votre code, vous pouvez faire comme ceci:

name = city.getName() == null ? "N/A" : city.getName();

Affecter le résultat de la condition pour Boolean  

boolean hasName = city.getName() != null;

EXTRA: pour curieux

Dans certaines langues basées sur Java comme Groovy, vous pouvez utiliser cette syntaxe:

name = city.getName() ?: "N/A";

Vous pouvez le faire dans Groovy car si vous demandez cette condition:

if (city.getName()) {
    //returns true if city.getName() != null
} else {
    //returns false if city.getName() == null
}

Ainsi, 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.

1
IgniteCoders

Vous pouvez utiliser l'opérateur ternaire en Java.

Syntaxe:

Condition ? Block 1 : Block 2

Donc, dans votre code, vous pouvez faire comme ça,

name = ((city.getName() == null) ? "N/A" : city.getName());

Pour plus d'informations, vous pouvez consulter this resource.

0
Shiva