2017-06-05 79 views
1

返回不同的POJO我想返回一個不同類型的列表如何使用Java泛型

的方法,我試圖像下面,但不知道這種做法是否正確。有人可以幫助我如何做到這一點?

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

並根據source我會在實現方法返回不同的List of objects

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闡述更多。 –

+1

你不想要返回一個列表嗎?所以肯定'公衆列表 getPageDetails(長adId,字符串源);'會更有意義? –

回答

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

人能給出一個泛型類型參數的方法了。您已經正確地推斷出需要正確的類實例來創建事物(cls.getConstructor()。newInstance())。

無類:

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

謝謝,你能幫我在沒有課堂的情況下使用嗎?這是可能的嗎?我也將只返回一種類型的對象的基礎上提供的來源。 – SAR

+0

非常感謝,投了票,但會嘗試這種方法,並在這裏更新 – SAR

+0

是否奏效。請+1 – DreamCoder

1

您可以使用genrics返回多個列表

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

謝謝,請問如何實現並返回不同的列表? – SAR

+0

非常感謝你,投了票,但會嘗試這種方法,並在這裏更新 – SAR