Estoy esperando un "no" en esta pregunta.¿Se puede almacenar una variable dentro de una cláusula if?
Me interesaba si puede guardar una variable al mismo tiempo cuando la registra en una cláusula if.
Digamos que tengo este código.
if(foo!=null){
if(foo.getBar()!=null){
Bar bar = foo.getBar();
System.out.println("Success: " + bar);
} else {
System.out.println("Failure.");
}
} else {
System.out.println("Failure.");
}
I manejo ahora en "falla": declara independientemente, incluso si el resultado es el mismo. Podría juntarlos así:
if(foo!=null && foo.getBar()!=null){
Bar bar = foo.getBar();
System.out.println("Success: " + bar);
} else {
System.out.println("Failure.");
}
Mucho más ordenado código ya. si foo es nulo, se detendrá allí y no probará foo.getBar (en el si) así que no obtendré un NPE. Lo último que me gustaría mejorar, y la pregunta principal: ¿Realmente me dio a llamar a foo.getBar() dos veces? Sería bueno alejarse de la segunda llamada idéntica si getBar() sería una operación muy pesada. Así que me pregunto si hay alguna manera es posible hacer algo similar a esto:
if(foo!=null && (Bar bar = foo.getBar())!=null){
Bar bar = foo.getBar();
System.out.println("Success: " + bar);
} else {
System.out.println("Failure.");
}
tendría que romperlo hasta dos diferentes si es nuevo si me gustaría hacer
Bar bar = foo.getBar();
if (bar!=null) ...
Por cierto, es "falla". –