Diferença entre Long.valueOf (java.lang.String) e new Long (java.lang.String)?

Estou consolidando código escrito por duas pessoas diferentes e percebo que converter um valor String em um Long foi feito de duas maneiras diferentes.

Coder # 1 fez isso:

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

Enquanto codificador # 2 fez isso:

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

Funcionalmente, o código funciona exatamente da mesma maneira. Há um bloco try / catch em torno de cada bit para lidar com qualquerNumberFormatException que é jogado. O valor da string de entrada é uma string de 8 dígitos que representa um decimal:"12345678" e em ambos os casos é corretamente convertido emLong.

Existe alguma diferença funcional entre passar a string no construtor e usar Long.valueOf ()? Eu verifiquei o documento do construtor aqui:

Long (java.lang.String)

e os documentos para valueOf () aqui:

Long.valueOf (java.lang.String)

Tanto quanto eu posso dizer, ambos chamam parseLong (), então não importa qual é usado. Eu só quero ter certeza de que não estou me preparando para um comportamento estranho mais adiante. Além disso, o estilo é mais "correto" (haha) do que o outro?

questionAnswers(6)

yourAnswerToTheQuestion