modificador - Uso de Java de la variable no final para establecer la variable final
static int java (2)
Esta es probablemente una pregunta tonta, pero me arriesgaré a preguntarlo de todos modos.
A menudo necesito crear una variable final
para usar en otro lugar y el valor de esa variable deberá establecerse en función de alguna condición. Así es como lo hago típicamente:
String notFinalVersion = null;
if (someThing == 1) {
notFinalVersion = "The value was 1.";
} else {
notFinalVersion = "The value is not 1.";
}
final String finalVersion = notFinalVersion;
Entonces puedo usar la variable finalVersion
donde sea necesario. Pero, esto parece de alguna manera equivocado. ¿Hay una mejor manera de hacer esto?
Editar: por "mejor", quise decir que estaba buscando un método para definir la variable final que no requiera que cree una variable adicional. Sabía que crear una variable adicional era ineficiente y no una buena práctica, y estaba seguro de que debía haber una forma de hacer lo que debía hacerse sin los pasos adicionales.
Recibí una respuesta, que he marcado como aceptada. Como mencioné en mi comentario, originalmente probé la solución provista, pero recibí un error de Eclipse. Debo haber escrito incorrectamente la primera vez, o Eclipse tiene algo así como un "hipo".
Acepto que hay muchas maneras de hacer algo y que lo que una persona aceptará como la mejor manera no es lo que alguien más consideraría. Sin embargo, todas las respuestas incluidas aquí, fueron claras y al punto y, creo, resolvieron mi problema.
Además de la respuesta de @rgettman, para este caso puedes usar el operador ternario :
final String finalVersion = someThing == 1 ? "The value was 1." : "The value is not 1.";
Puede declarar una variable final
y no asignarla todavía, siempre que esté definitivamente asignada antes de usarla. No lo asigne null
para empezar, de lo contrario ya se lo asignará definitivamente. Asíguelo como ya lo hace con sus bloques if
/ else
, y todo irá bien.
final String finalVersion;
if (someThing == 1) {
finalVersion = "The value was 1.";
} else {
finalVersion = "The value is not 1.";
}