Instrucción corta IF – ELSE

Intento hacer que mi código sea más legible, así que decidí usar algunas declaraciones cortas de IF.

Aquí está mi código que no funciona (“no es una statement”):

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

¿Qué pasa con esto? ¿Necesita paréntesis? ¿Dónde?

La “expresión ternaria” x ? y : z x ? y : z solo se puede usar para la asignación condicional. Es decir, podrías hacer algo como:

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

porque la expresión ternaria está devolviendo algo (de tipo String en este ejemplo).

En realidad, no está destinado a ser usado como un corto, en línea if-else . En particular, no puede usarlo si las partes individuales no devuelven un valor, o devolver valores de tipos incompatibles. (Entonces, si puede hacer esto si ambos métodos devuelven el mismo valor, no debe invocarlo solo para efectos secundarios).

Entonces, la forma correcta de hacer esto sería con un bloque if-else:

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

que, por supuesto, se puede acortar a

 jXPanel6.setVisible(jXPanel6.isVisible()); 

Ambas últimas expresiones son, para mí, más legibles porque comunican más claramente lo que estás tratando de hacer. (Y por cierto, ¿obtuviste tus condiciones al revés? Parece que de todos modos no es una operación, en lugar de una palanca).

No mezcles el bajo conteo de caracteres con la legibilidad . El punto clave es lo que se entiende más fácilmente; y usar un poco de las características del lenguaje es una manera definitiva de confundir a los lectores, o al menos hacer que hagan una doble toma mental.

 jXPanel6.setVisible(jXPanel6.isVisible()); 

o en tu forma:

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

El operador ternario solo puede ser el lado derecho de una tarea y no una statement propia.

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

Como otros han indicado, algo de la forma

 x ? y : z 

es una expresión, no una statement (completa). Es un valor r que necesita ser usado en algún lugar, como en el lado derecho de una tarea, o un parámetro para una función, etc.

Quizás podría ver esto: http://download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html

Llego un poco tarde a la fiesta, pero para futuros lectores.

Por lo que puedo decir, solo quieres cambiar el estado de visibilidad ¿no? ¿Por qué no usar el ! ¿operador?

 jxPanel6.setVisible(!jxPanel6.isVisible); 

No es una statement if, pero prefiero este método para el código relacionado con su ejemplo.