Różnica między Long.valueOf (java.lang.String) a nowym Long (java.lang.String)?

Konsoliduję kod napisany przez dwóch różnych ludzi i zauważam, że rzutowanie wartości String na Long zostało wykonane na dwa różne sposoby.

Koder # 1 to zrobił:

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

Podczas gdy koder # 2 to zrobił:

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

Funkcjonalnie kod działa dokładnie tak samo. Wokół każdego bitu znajduje się blok try / catch do obsługi dowolnegoNumberFormatException to jest rzucone. Przychodząca wartość ciągu to 8-cyfrowy ciąg reprezentujący liczbę dziesiętną:"12345678" iw obu przypadkach jest poprawnie przekształcanyLong.

Czy istnieje jakakolwiek funkcjonalna różnica między przekazaniem ciągu w konstruktorze a użyciem Long.valueOf ()? Sprawdziłem tutaj dokument konstruktora:

Długi (java.lang.String)

i dokumenty dla valueOf () tutaj:

Long.valueOf (java.lang.String)

O ile wiem, oba wywołują parseLong (), więc nie ma znaczenia, który jest używany. Chcę tylko upewnić się, że nie ustawię się na jakieś dziwne zachowanie w dalszej części drogi. Czy styl jest bardziej „poprawny” (haha) niż drugi?

questionAnswers(6)

yourAnswerToTheQuestion