Sollte GSON als statisches Finale deklariert werden?

8

Ich verwende Java Callable Future in meinem Code. Unten ist mein Hauptcode, der die Zukunft und die callables verwendet -

Unten ist mein Hauptcode, der die Zukunft und die Callables verwendet -

%Vor%

Unten ist meine Klasse Task , die die Callable-Schnittstelle implementiert, in der ich einen REST-URL-Aufruf an meine Server unter Verwendung von RestTemplate mache. Und dann gebe ich response variable an checkString method weiter, in dem ich den JSON-String deserialisiere und dann überprüfe ich, ob der Schlüssel error oder warning enthält und dann basierend darauf ein TestResponse .

%Vor%

Also meine Frage ist, wie soll ich hier GSON deklarieren? Sollte es als statische finale globale Variable in meiner Task-Klasse deklariert werden? Bcoz derzeit analysiere ich JSON mit gson und für jeden Anruf mache ich new Gson() , was teuer wäre oder nicht?

    
AKIWEB 11.02.2014, 17:46
quelle

2 Antworten

13

Das Gson -Objekt kann explizit aus mehreren Threads verwendet werden, da es keinen internen Status behält, also deklariere private static final Gson GSON = new Gson(); oder mach es sogar public .

Wenn Sie möchten, dass Ihr Client-Code das Rendering mithilfe von GsonBuilder anpassen kann, sollten Sie ein Objekt Gson als Parameter akzeptieren.

    
chrylis 11.02.2014, 17:55
quelle
0

Die Gson-Bibliothek kann auf Klassenebene definiert und überall verwendet werden, da sie den Zustand zwischen verschiedenen Aufrufen nicht aufrechterhält. Da der Status nicht beibehalten wird, können Sie ihn einmal deklarieren und überall verwenden (eine Zeile weniger Code, wenn Sie ihn erneut verwenden müssen). Multi-Threading hat keinen Einfluss darauf. Wenn man jedoch die Leistungskennzahlen in der offiziellen Dokumentation betrachtet, scheint es kein teurer Anruf zu sein.

    
ucsunil 11.02.2014 18:03
quelle