2017-02-28 77 views
3

我有一個POJO類翻新。避免翻新POJO冗餘

public class AppData(){ 
     String a; 
     String b; 
     String c; 
     String d; 

     public void setA(String a){ 
      this.a = a; 
     } 
     public String getA(){ 
     return a; 
     } 
     public void setB(String b){ 
      this.b = b; 
     } 
     public String getB(){ 
     return b; 
     } 
     public void setC(String c){ 
      this.c = c; 
     } 
     public String getC(){ 
     return c; 
     } 
     public void setD(String d){ 
      this.d = d; 
     } 
     public String getD(){ 
     return d; 
     } 
    } 

我有3個不同的改造請求,我需要AppData類。但在請求1中,我只需要屬性a和b。在請求2中,我只需要a,b,c,在第三個請求中我只需要b,c和d。 參考我找到解決方案,如添加瞬態關鍵字,添加註釋等,但我沒有得到解決方案。有沒有辦法爲所有這3個請求使用相同的POJO類?

在此先感謝

+6

您可以使用相同的POJO類而不會出現任何錯誤。其餘的變量將爲空 –

+0

你得到了什麼錯誤,因爲它可以完美地工作,只是在進行序列化和反序列化時將未使用的字段值設爲null? – Avi

+0

最初,當我嘗試過時,執行過程中出現了一些問題,並且管理時間讓它變得多餘。現在我已經深入瞭解該項目,並且需要了解是否刪除會導致問題的冗餘。感謝您的時間 –

回答

2

您正在做的正確,只有一個類是足夠的,在調用通過你的AppData類的所有三個請求。

Call<AppData> 

無論值是響應返回將例如用於第一請求僅A,B將被類似地用於其它請求各個變量設定進行更新將被設置,所以在檢索可以使用各自干將

所以對於拳頭請求不要嘗試檢索c和d,否則你會得到空指針只使用

response.getA(); 
response.getB(); 

同樣對於其他請求使用那些返回的響應

+1

感謝您的時間@Mrinmoy –

+2

如果您嘗試運行'getC()'或'getD()'並且它沒有反序列化,您將不會得到'NullPointer'異常,您將只獲得'null '回來。如果您正在檢查值是否返回,這可能很有用。 –

+1

@carlpoole是正確的值null將被返回,如果你嘗試使用這些變量進行條件檢查等,那麼你將得到NullPointer – Mrinmoy

2

AppData對象將所有3個請求工作。未從服務器響應反序列化的值將僅爲null