Ésta no es una respuesta verdadera, porque no voy a utilizar aquí el operador ternario.
Si necesita para concatenar cadenas eliminar los vacíos de poder escribir una función genérica (sin comprobación de errores, sin optimizaciones, tomarlo como un ejemplo):
public static String join(String[] array, char separator) {
StringBuffer result = new StringBuffer();
for (int i = 0; i < array.length; ++i) {
if (array[i] != null && array[i].length() != 0) {
if (result.length() > 0)
result.append(separator);
result.append(array[i]);
}
}
return result.toString();
}
Es bastante más larga que la "línea" versión, pero funciona independientemente del número de cadenas que desee unir (y puede cambiarlo para usar una cantidad variable de parámetros). Hará que el código donde lo va a usar sea mucho más claro que cualquier tipo de árbol if
.
Algo como esto:
public static String join(char separator, String... items,) {
StringBuffer result = new StringBuffer();
for (String item: items) {
if (item != null && item.length() != 0) {
if (result.length() > 0)
result.append(separator);
result.append(item);
}
}
return result.toString();
}
Por supuesto que sí, pero no es lo que creo que es mucho más fácil de leer usando "normal" si las declaraciones? Quiero decir: conoces al operador ternario, pero para usarlo en cascada no está claro para ti, será menos claro para quién leerá tu código. –
¿qué hay de los otros cuatro escenarios? ¿Son posibles también? – Alnitak
Sí, es posible. Sin embargo, no usaría el operador ternario para esto. – NPE