2017-06-05 62 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