Courte déclaration IF – ELSE

J’essaie de rendre mon code plus lisible, alors j’ai décidé d’utiliser des instructions IF courtes.

Voici mon code qui ne fonctionne pas (“pas une déclaration”):

jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false); 

Qu’est-ce qui ne va pas avec ça? A besoin de crochets? Où?

L’expression “ternaire” x ? y : z x ? y : z ne peut être utilisé que pour une affectation conditionnelle. C’est-à-dire que vous pourriez faire quelque chose comme:

 Ssortingng mood = inProfit() ? "happy" : "sad"; 

car l’expression ternaire renvoie quelque chose (de type Ssortingng dans cet exemple).

Ce n’est pas vraiment destiné à être utilisé comme un court, en ligne, if-else . En particulier, vous ne pouvez pas l’utiliser si les composants individuels ne renvoient pas de valeur ou renvoient des valeurs de types incompatibles. (Donc, si vous pouviez le faire si les deux méthodes renvoyaient la même valeur, vous ne devriez pas l’ appeler uniquement pour les effets secondaires).

Donc, la bonne façon de faire serait simplement avec un bloc if-else:

 if (jXPanel6.isVisible()) { jXPanel6.setVisible(true); } else { jXPanel6.setVisible(false); } 

qui bien sûr peut être raccourci à

 jXPanel6.setVisible(jXPanel6.isVisible()); 

Ces deux dernières expressions sont, pour moi, plus lisibles, car elles communiquent plus clairement ce que vous essayez de faire. (Et au fait, est-ce que vous vous êtes trompé de condition? On dirait que c’est un non-op de toute façon, plutôt qu’un bascule).

Ne mélangez pas le nombre de caractères faible avec la lisibilité . Le point clé est ce qui se comprend le mieux; et une utilisation abusive du langage est un moyen précis de confondre les lecteurs, ou du moins de leur faire faire une double prise mentale.

 jXPanel6.setVisible(jXPanel6.isVisible()); 

ou sous votre forme:

 jXPanel6.setVisible(jXPanel6.isVisible()?true:false); 

L’opérateur ternaire ne peut être que le bon côté d’une mission et non une déclaration qui lui est propre.

http://www.devdaily.com/java/edu/pj/pj010018/

Comme d’autres l’ont indiqué, quelque chose de la forme

 x ? y : z 

est une expression, pas une déclaration (complète). C’est une valeur qui doit être utilisée quelque part – comme du côté droit d’une affectation, ou d’un paramètre d’une fonction, etc.

Vous pourriez peut-être regarder ceci: http://download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html

Je suis un peu en retard pour la fête mais pour les futurs lecteurs.

D’après ce que je peux dire, vous voulez juste changer l’état de visibilité, n’est-ce pas? Pourquoi ne pas utiliser le ! opérateur?

 jxPanel6.setVisible(!jxPanel6.isVisible); 

Ce n’est pas une instruction if mais je préfère cette méthode pour le code lié à votre exemple.