我查询数据库并获得一个Bean类,它返回ArrayList<Object>
。但是我
public static ArrayList<Object> getBeanList(){
String sql = "....";
ArrayList<Object> beanList = DBUtil.getBeanList(sql, new ConfDetailsBean());
return beanList;
}
在上面的helper方法的调用函数中,我必须先将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是硬编码的。
如何使helper方法通用,以便我可以传递任何Bean对象?
答案 0 :(得分:2)
您应该引入一个(方法范围的)类型参数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);