2017-01-02 42 views
1

我已經使用默認的HttpUrlConnection類來進行api調用,並且GSON將Java對象轉換爲json請求和json響應轉換爲等效的Java對象。創建了各種模型(POJO類)來將請求/響應轉換爲模型對象。我懷疑是否因爲GSON是序列化/反序列化庫而將Serializable實現爲所有這些模型是理想的?我是否需要在使用GSON(序列化/反序列化庫)時爲模型類實現Serializable

public class Contact implements Serializable { 
    private String name; 
    private String email; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 
} 

我刪除了實現所有車型序列化,一切似乎wroking fine.But我很困惑,是不是正確與否?

+1

NO。在使用Gson時,您不必使它們成爲「Serializable」。你做對了。 –

回答

2

取決於你想要對他們做什麼,但最有可能你不需要。可序列化是在Java中序列化數據的一種方式,這是默認的Java方式。 JSON序列化是另一個。 Parcelable是Android專用的三分之一。唯一需要使用Serializable的時間是,如果你想將它傳遞給一個以Serializable作爲參數的API。如果你不需要這樣做,那麼使用GSON來序列化而不是實現Serializable就好了。

這3種方法的區別在於它們輸出的數據格式。不同的格式有不同的優點和缺點,但他們都能完成工作。

+0

我的api沒有將Serializable作爲參數..如果我沒有需要序列化數據時,我實現了Serializable,那麼有什麼缺點?我已經讀過,在內存分配和可訪問性方面沒有實現Serializable的缺點.. http://stackoverflow.com/questions/16789076/what-are-the-disadvantages-of-making-a-class-serializable-in-java –

+0

除了稍微複雜一點的代碼之外,沒有什麼不好。真的不是太多。如果您已經擁有它,我不會將其排除在優先地位。事實上,有些時候你可能會需要它(我有時不得不從JSON反序列化一個對象,然後通過Intent將它傳遞給另一個Activity,這需要Serializable)。 –