2017-10-06 2 views
0

je pensais à initialiser dynamiquement un tableau en Java utilisant l'opérateur ternaire ainsi:opérateur ternaires dans l'initialisation du tableau statique ne fonctionne pas comme prévu

boolean errorMsg = true; 
... 
String[] elements = new String[] { 
    errorMsg ? "single_element" : "1st_element", "2nd_element" 
}; 

Je voulais juste initialiser le tableau avec 1 élément si errorMsg est true, ou avec 2 éléments si errorMsg est false. Si errorMsg est true ou false, il initialise toujours le String[] avec les deux derniers éléments. Pourquoi cela arrive-t-il?

Répondre

2

Pourquoi cela se produit-il?

Parce que errorMsg ? "single_element" : "1st_element" décide d'une chaîne et vous avez une autre chaîne déjà "2nd_element".

Vous avez besoin d'un sinon si à la place de l'initialisation du tableau lui-même pas avec les éléments à l'intérieur.

String[] elements = errorMsg? new String[] { "single_element" } : new String[] { "1st_element", "2nd_element" }; 

Mais pour garder mes juniours développeurs heureux je préfère écrire

 String[] elements = null; 
     if (errorMsg) { 
      elements = new String[] { "single_element" }; 
     } else { 
      elements = new String[] { "1st_element", "2nd_element" }; 
     } 
+0

Merci, je compris clairement. Je pensais juste qu'il était possible de retourner les derniers éléments conjointement "': "1st_element", "2nd_element" '". mais la virgule m'a confondu. – another