Unterschied zwischen Long.valueOf (java.lang.String) und neuem Long (java.lang.String)?

Ich konsolidiere Code, der von zwei verschiedenen Personen geschrieben wurde, und stelle fest, dass das Umwandeln eines String-Werts in Long auf zwei verschiedene Arten erfolgt ist.

Coder # 1 hat dies getan:

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

Während Coder # 2 dies getan hat:

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

Funktionell funktioniert der Code genauso. Um jedes Bit herum gibt es einen Try / Catch-Block, mit dem jeder umgehen kannNumberFormatException das wird geworfen. Der eingehende Zeichenfolgenwert ist eine 8-stellige Zeichenfolge, die eine Dezimalzahl darstellt:"12345678" und in beiden Fällen wird es korrekt in konvertiertLong.

Gibt es einen funktionalen Unterschied zwischen der Übergabe des Strings im Konstruktor und der Verwendung von Long.valueOf ()? Ich habe das Konstruktordokument hier überprüft:

Long (java.lang.String)

und die docs für valueOf () hier:

Long.valueOf (java.lang.String)

Soweit ich das beurteilen kann, rufen beide parseLong () auf, so dass es egal ist, welches verwendet wird. Ich möchte nur sicherstellen, dass ich mich nicht auf ein merkwürdiges Verhalten einlasse. Ist auch einer der beiden Stile "korrekter" (haha) als der andere?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage