El escenario es que necesito acceder a un valor al menos dos veces. Es decir. Estoy usando el registrador para hacer un seguimiento de lo que está sucediendo en la aplicación. Quiero registrar el nombre del objeto, esa función está trabajando, y luego hacer algo con el mismo nombre (es decir, verificar si contiene alguna cadena o ponerla en una matriz).¿Usa variables para almacenar valores u obtener valores directamente de los objetos?
Memorizar el nombre de la variable:
foo(Bar bar){
String name = bar.getName();
logger.info("I am working with "+name);
this.doSomethingWith(name);
}
O llamando getName() dos veces:
foo(Bar bar){
logger.info("I am working with "+bar.getName());
this.doSomethingWith(bar.getName());
}
entiendo, que en el primer escenario, que va a crear una nueva cadena, asignar un valor a él y luego recuperar este valor dos veces. De esta forma estoy usando más recursos de memoria, ¿correcto?
En el segundo caso, estoy accediendo a la barra de objetos dos veces y luego accediendo a su nombre dos veces. Supongo que este no es un enfoque SECO. Pero, por otro lado, no me repito en la memoria, ¿correcto?
¿Qué enfoque es mejor?
En el primer método, _no estás_ creando un nuevo String. Entonces ambos métodos deberían terminar con el mismo consumo de memoria. – Fildor
Puede valer la pena verificar el código de bytes generado con un descompilador para ver si su problema es realmente un problema; 'javac' podría reconocer este caso de uso y optimizarlo de una forma u otra sin importar en qué dirección lo escriba en Java. – akaIDIOT