2016-09-19 3 views
1

In meinem Projekt habe ich eine Menge com.fasterxml.jackson.databind.ObjectMapper mit JSON, zum Beispiel zu tun:Warum nicht einige Methoden in com.fasterxml.jackson.databind.ObjectMapper statisch?

ObjectMapper mapper = new ObjectMapper(); 
A a = mapper.readValue(file.getBytes(), A.class); 

Auf dem ersten Blick denke ich, es ist besser, es besser ist, die Readvalue Methode statisch zu machen, dann Wir können es als ObjectMapper.readValue(), viel klarer verwenden. Aber ich weiß, dass es Gründe dafür geben muss, dass es nicht sollte, weiß es jemand?

+1

Schauen Sie sich andere Konstruktoren von ObjectMapper an. ObjectMapper (com.fasterxml.jackson.core.JsonFactory jf) und ObjectMapper (JsonFactory jf, DefaultSerializerProvider sp, DefaultDeserializationContext dc). Die ObjectMapper-Klasse kann auf viele Arten mit diesen Argumenten konfiguriert werden. Und jeder Teil einer Anwendung kann je nach Bedarf unterschiedliche Konfigurationen verwenden. Das kannst du nicht wirklich statisch machen (du kannst es aber besser nicht). Dies ist nicht der einzige Grund, sondern einer aus Sicht der Benutzerfreundlichkeit. –

Antwort

2

Ein anderer Grund ist, dass Sie mit jeder ObjectMapper-Instanz eine bestimmte spezifische Konfguration durch den ObjectMapper bereit stellen, während die Serialisierung und Desrialisierung wie unten beschrieben ablaufen. So können Sie während der Objektkonvertierung verschiedene Staregien konfigurieren.

ObjectMapper mapper = new ObjectMapper(); 
    mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); 
    String json = mapper.writeValueAsString(new MyBean()); 
Verwandte Themen