2017-06-05 1 views
1

je voudrais une méthode pour retourner un autre type de listeComment retourner différents POJO en utilisant génériques java

j'ai essayé quelque chose comme ce qui suit, mais pas sûr si cette approche est correcte ou non. quelqu'un pourrait m'aider comme comment faire cela?

public <T> List<T> getPageDetails(Long adId,String source); 

et sur la base source je retournerai les différents List of objects dans la méthode de mise en œuvre.

like in implementation if the source is 1, then will have to return List of objects type1 if the source is 2 then list of objects type2 etc 
+5

plaese élaborer plus. –

+1

Vous ne voulez pas retourner une liste? Donc sûrement 'public Liste getPageDetails (Long adId, String source);' aurait plus de sens? –

Répondre

1
private Object objT; 

public <T> List<T> magicalListGetter(Class<T> cls) { 
    List<T> list = new ArrayList<>(); 
    list.add(cls.cast(actuallyT)); 
    try { 
     list.add(cls.getConstructor().newInstance()); // If default constructor 
    } ... 
    return list; 
} 

On peut donner un paramètre de type générique à une méthode aussi. Vous avez correctement déduit que vous avez besoin de l'instance de classe correcte pour créer des choses (cls.getConstructor(). NewInstance()).

Sans classe:

public <T> List<T> magicalListGetter() { 
return new ArrayList<T>(); 
} 
+0

Merci, pourriez-vous s'il vous plaît m'aider à utiliser ceci sans cours? et est-ce possible? aussi je retournerai seulement un type d'objets à la fois basé sur la source fournie. – SAR

+0

Merci beaucoup, jusqu'à voté, mais va essayer cette approche et mettre à jour ici – SAR

+0

cela a-t-il fonctionné. S'il vous plaît +1 – DreamCoder

1

Vous pouvez utiliser genrics pour retourner la liste multiple

public <T> List<T> getPageDetails(Long adId,String source); 

public static void main(String[] args) { 
     Solution sol = new Solution(); 

     List<String> list = sol.getPageDetails(String.class, 0l, "source"); 
    } 

    public <T> List<T> getPageDetails(Class<T> c, Long adId, String source) { 
     List<T> list = new ArrayList<>(); 
     List<Object> objectList = getObjectList(adId, source); 
     for (Object o : objectList) { 
      T t = c.cast(o); 
      list.add(t); 
     } 
     return list; 

    } 

    private List<Object> getObjectList(Long adId, String source) { 
     // TODO Auto-generated method stub 
     return null; 
    } 
+0

Merci, pourriez-vous s'il vous plaît comment mettre en œuvre et renvoyer une liste différente? – SAR

+0

Merci beaucoup, jusqu'à voté mais j'essaierai cette approche et mise à jour ici – SAR