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

如何根据传递的类类型在Java中设计处理集合的方法?,java,generics,collections,apache-commons-dbutils,Java,Generics,Collections,Apache Commons Dbutils,我查询一个数据库并得到一个Bean类,它返回ArrayList。然而我 public static ArrayList<Object> getBeanList(){ String sql = "...."; ArrayList<Object> beanList = DBUtil.getBeanList(sql, new ConfDetailsBean()); return beanList; } publicstaticarraylistg

我查询一个数据库并得到一个Bean类,它返回
ArrayList
。然而我

public static ArrayList<Object> getBeanList(){

    String sql = "....";

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

    return beanList;
}
publicstaticarraylistgetbeanlist(){
字符串sql=“…”;
ArrayList beanList=DBUtil.getBeanList(sql,新的ConfDetailsBean());
返回beanList;
}
在上述helper方法的调用函数中,我必须将
ArrayList
强制转换为必需的类,然后才能使用beanList:

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

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

for(Object bean: beanList)
    confDetailsBeanList.add((ConfDetailsBean) bean);
ArrayList beanObjList=getBeanList()//求助电话
ArrayList confDetailsBeanList=新建ArrayList();
for(对象bean:beanList)
添加((ConfDetailsBean)bean);
现在,在helper方法
DBUtil.getBeanList(sql,new ConfDetailsBean())中,ConfDetailsBean是硬编码的

如何使helper方法泛型,以便我可以传递任何Bean对象?

您应该引入(方法范围)类型参数
T
,并显式传递
,以便能够在运行时实例化
T

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

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

    String sql = "....";

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

    return beanList;
}
公共静态列表getBeanList(类clazz){
字符串sql=“…”;
List beanList=DBUtil.getBeanList(sql,clazz);
返回beanList;
}
这样,您的代码将缩短一点:

List<ConfDetailsBean> confDetailsBeanList = getBeanList(ConfDetailsBean.class);  
List confDetailsBeanList=getBeanList(ConfDetailsBean.class);

到目前为止你试过什么吗?:)非常感谢。让它以某种复杂的方式工作
arraylistbeanobjlist=(ArrayList)runner.query(conn,sql,newbeanlistHandler((Class)beanObj.getClass())(Class)beanObj.getClass())
相当于
ConfDetailsBean.Class