2017-02-28 1 views
3

J'ai une classe POJO pour la rénovation.Éviter la rétrofit POJO redundancy

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; 
     } 
    } 

J'ai 3 différentes demandes de retrofit où j'ai besoin de la classe AppData. Mais dans la requête 1, je n'ai besoin que des attributs a et b. Dans la requête 2, je n'ai besoin que de a, b, c et dans la troisième requête je n'ai besoin que de b, c et d. En référence, j'ai trouvé des solutions comme l'ajout de mots-clés transitoires, l'ajout d'annotations, etc. Mais je n'ai pas trouvé de solution. Est-il possible d'utiliser la même classe POJO pour toutes ces 3 demandes?

Merci à l'avance

+6

Vous pouvez utiliser la même classe POJO sans aucune erreur. Le reste des variables sera nul –

+0

Quelle erreur obtenez-vous dedans, car cela fonctionnera parfaitement juste mettre les champs inutilisés à la valeur null tout en sérialisant et désérialiser? – Avi

+0

Initialement quand j'ai essayé il y avait quelques problèmes avec cette implémentation et pour gérer le temps je l'ai fait redondant. Maintenant, j'ai déjà atteint le projet en profondeur et j'ai besoin de savoir si je supprime la redondance qui va poser problème ou non. merci pour votre temps –

Répondre

2

Vous faites bien, une seule classe suffit, dans Call passer votre classe AppData pour les trois demandes.

Call<AppData> 

Quelle que soit la valeur est retournée en réponse sera mise à jour par exemple pour la première demande seulement, b sera défini de même pour une autre demande variables respectives seront configurées, de sorte pendant que vous récupérer pouvez utiliser getters respectifs

donc, pour la demande de poing ne pas essayer de récupérer c et d, ou bien vous obtiendrez NullPointer utiliser uniquement

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

De même pour les autres requêtes, utilisez celles qui sont renvoyées en réponse

+1

merci pour votre temps @Mrinmoy –

+2

si vous essayez d'exécuter 'getC()' ou 'getD()' et il n'a pas été désérialisé vous n'obtiendrez pas une exception 'NullPointer' vous obtiendrez juste' null 'retour. Cela peut être utile si vous vérifiez si la valeur est revenue ou non. –

+1

@carlpoole est la valeur nulle null sera retourné, si vous essayez d'utiliser ces variables pour la vérification de la condition, etc, alors vous obtiendrez NullPointer – Mrinmoy

2

L'objet AppData travaillera pour les 3 demandes. Les valeurs qui ne sont pas désérialisées à partir d'une réponse de serveur seront simplement null.