0

我查询一个数据库并得到一个 Bean 类,它返回ArrayList<Object>. 但是,我

public static ArrayList<Object> getBeanList(){

    String sql = "....";

    ArrayList<Object> beanList = DBUtil.getBeanList(sql, new ConfDetailsBean());

    return beanList;
}

在上述辅助方法的调用函数中,我必须先转换ArrayList<Object>为所需的类,然后才能使用 beanList:

ArrayList<Object> beanObjList = getBeanList();  //helpermethod call

ArrayList<ConfDetailsBean> confDetailsBeanList = new ArrayList<ConfDetailsBean>();

for(Object bean: beanList)
    confDetailsBeanList.add((ConfDetailsBean) bean);

现在,在辅助方法DBUtil.getBeanList(sql, new ConfDetailsBean());中,ConfDetailsBean 是硬编码的。

如何使辅助方法通用,以便我可以传递任何 Bean 对象?

4

1 回答 1

2

您应该引入一个(方法范围的)类型参数T并显式传递 a Class<T>,以便您能够T在运行时进行实例化。

此外,返回 aList而不是ArrayList可以为您提供更大的灵活性:

public static List<T> getBeanList(Class<T> clazz) {

    String sql = "....";

    List<T> beanList = DBUtil.getBeanList(sql, clazz);

    return beanList;
}

有了这个,你的代码会缩短一点:

List<ConfDetailsBean> confDetailsBeanList = getBeanList(ConfDetailsBean.class);  
于 2016-01-06T07:19:32.880 回答