如何使用java泛型返回不同的POJO

时间:2017-06-05 10:13:28

标签: java generics pojo

我想要一种方法来返回不同类型的List

我尝试了类似下面的内容,但不确定这种方法是否正确。有人可以帮我解决这个问题吗?

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

2 个答案:

答案 0 :(得分: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>();
}

答案 1 :(得分: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;
    }