Operador Condicional ?:

29 de agosto de 2010

Java solamente cuenta con un operador ternario, el operador condicional ?:, que algunas veces se lo utiliza en lugar de una intrucción if else. 
"En conjunto, los operandos y ?: forman una expresión condicional."
Sintaxis

operando1 ? operando2 : operando3

El primer operando es una expresión booleana que indica la condición a analizar, el operador2 es el valor de la expresión condicional  si la expresión booleana es verdadera y el operador3 es el valor de la expresión condicional si la expresión es falsa.

Ejemplos

En primer lugar presentaré un ejemplo sencillo de uso de este operador y a continuación un ejemplo más largo, no así complejo, del mismo.

El primer ejemplo comprueba la calificación de un alumno y asigna a una variable cadena si aprueba o no el estudiante.
String promocion;
promocion = nota >=60 ? "Aprobado" : "Reprobado";
String.out.println("Promoción: " + promocion);

El segundo ejemplo muestra un método getConceptFilterCriteria que devuelve un AdvancedCriteria (programación con smartGWT). El método sirve para filtrar una lista de acuerdo a dos grupos de criterios, de 6 y 3 cada uno; sin el uso del operador condicional, hubiera tenido que programar las 512 posibilidades de filtrado, pero la tarea se hace mucho más fácil utilizando el operador mencionado.


private AdvancedCriteria getConceptFilterCriteria(){
        AdvancedCriteria criteria = new AdvancedCriteria(OperatorId.AND, new AdvancedCriteria[] {
                new AdvancedCriteria(OperatorId.OR, new AdvancedCriteria[] {
                        (inuseIsChecked ? new AdvancedCriteria("conceptFlag", OperatorId.EQUALS , "In Use"): new AdvancedCriteria("conceptFlag",OperatorId.EQUALS)),
                        (isnewChecked ? new AdvancedCriteria("conceptFlag", OperatorId.EQUALS , "New"): new AdvancedCriteria("conceptFlag",OperatorId.EQUALS)),
                        (isChangedChecked ? new AdvancedCriteria("conceptFlag", OperatorId.EQUALS , "Changed"): new AdvancedCriteria("conceptFlag",OperatorId.EQUALS))
                    }),
                new AdvancedCriteria(OperatorId.OR, new AdvancedCriteria[] {
                        (isNotTranslatedChecked ? new AdvancedCriteria("status", OperatorId.EQUALS , "Not translated"): new AdvancedCriteria("status",OperatorId.EQUALS)),                                
                        (isForTranslationChecked ? new AdvancedCriteria("status", OperatorId.EQUALS , "For translation"): new AdvancedCriteria("status",OperatorId.EQUALS)),
                        (isAutoTranslatedChecked ? new AdvancedCriteria("status", OperatorId.EQUALS , "Auto translated"): new AdvancedCriteria("status",OperatorId.EQUALS)),
                        (isTranslatedChecked ? new AdvancedCriteria("status", OperatorId.EQUALS , "Translated"): new AdvancedCriteria("status",OperatorId.EQUALS)),
                        (isForReviewChecked ? new AdvancedCriteria("status", OperatorId.EQUALS , "For review"): new AdvancedCriteria("status",OperatorId.EQUALS)),
                        (isCompleteChecked ? new AdvancedCriteria("status", OperatorId.EQUALS , "Complete"): new AdvancedCriteria("status",OperatorId.EQUALS))
                })                                                                                               
        });
        return criteria;
    }


Fuente
  • Deitel. "Cómo programar en Java". 5ta edición

Si le gustó esta entrada, ¡podría invítame a un café!

0 comentarios:

Related Posts with Thumbnails