如何根据传递的类类型在Java中设计处理集合的方法?
我查询一个数据库并得到一个Bean类,它返回如何根据传递的类类型在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
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