如何根据传递的 class 类型设计处理 Java 中的集合的方法?

How to design method handling a Collection in Java based on the class type passed?

我查询一个数据库并得到一个 Bean class,returns ArrayList<Object>。不过我

public static ArrayList<Object> getBeanList(){

    String sql = "....";

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

    return beanList;
}

在上述辅助方法的调用函数中,我必须先将 ArrayList<Object> 转换为所需的 class 才能使用 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 对象?

您应该引入一个 (method-scoped) type-parameter T 并显式传递一个 Class<T>,这样您就可以实例化 T运行。

此外,返回 List 而不是 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);