¿Diferencia entre Long.valueOf (java.lang.String) y la nueva Long (java.lang.String)?

Estoy consolidando el código escrito por dos personas diferentes y observo que la conversión de un valor de String en un Long se ha realizado de dos maneras diferentes.

Codificador # 1 ha hecho esto:

String strId = "12345678";
...
Long lId = new Long(strId);

Mientras que el codificador # 2 ha hecho esto:

String strId = "12345678";
...
Long lId = Long.valueOf(strId);

Funcionalmente, el código funciona exactamente igual. Hay un bloque try / catch alrededor de cada bit para manejar cualquierNumberFormatException que se tira El valor de la cadena entrante es una cadena de 8 dígitos que representa un decimal:"12345678" y en ambos casos se convierte correctamente enLong.

¿Hay alguna diferencia funcional entre pasar la cadena en el constructor y usar Long.valueOf ()? He revisado el documento del constructor aquí:

Largo (java.lang.String)

y los documentos para valueOf () aquí:

Long.valueOf (java.lang.String)

Por lo que puedo decir, ambos llaman a parseLong () por lo que no importa cuál se use. Solo quiero asegurarme de que no me estoy preparando para un comportamiento extraño en el futuro. Además, ¿alguno de los estilos es más "correcto" (jaja) que el otro?

Respuestas a la pregunta(6)

Su respuesta a la pregunta