Java怎么把类型写成T后取得它的真实类型。比如public List<T> find() {}或public T find() {}

publicList<User>find(){List<User>list=null;Stringsql="select*fromuserswhereid<?";try{... public List<User> find() {
List<User> list=null;
String sql = "select * from users where id<?";
try {
QueryRunner qr = new QueryRunner();
list = qr.query(conn, sql, new BeanListHandler<User>(User.class), new Object[]{"10"});
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
这个方法的List的类型是user,所以每次只能用User的bean。这个方法要怎么改,改了之后就是随便传什么类型都可以用。谢谢
public <T>T findSimpleRefResult(String sql, List<Object> params, Class<T> cls) throws Exception {
T resultObject = null;
pt = con.prepareStatement(sql);
if(params != null && !params.isEmpty()) {
for(int i = 0; i < params.size(); i++) {
pt.setObject(i + 1, params.get(i));
}
}
rs = pt.executeQuery();
ResultSetMetaData metaData = rs.getMetaData();
int cols_len = metaData.getColumnCount();
while(rs.next()) {
代码太多了...
}
return resultObject;
}
我找到方法了,就是上面的这个。不过不知道要怎么调用
展开
 我来答
微前端
2014-02-25 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:143
采纳率:0%
帮助的人:85.2万
展开全部
这个地方泛型是不支持的,因为List传的数据是从数据库中查找的,是确定的类型,sql语句不支持select * from <T> where id<?类似泛型的功能,所以只能分别取查询
追问
我找到方法了,就是上面的这个。不过不知道要怎么调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
y6198078
2014-02-25 · 超过20用户采纳过TA的回答
知道答主
回答量:70
采纳率:0%
帮助的人:35.3万
展开全部
从楼上的回答和你的提问总结出这事不可能的,除非你硬反射(很耗时)。可行的办法是让你所有的Bean都实现某一个接口(POJO,接口名你自己定)这样你的方法就是
public List<POJO> find(String atble) {//table是表的名字
........

return list;
}
更多追问追答
追问
我找到方法了,就是上面的这个。不过不知道要怎么调用
追答
直接调用就OK啊    第一个参数是你的sql(sql里面会有N多?)第二个list是对应sql里面的?的参数
第三个是一个class 是你bean的class 你直接getclass就能得到 这样就OK了啊
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiang5260hg
2014-02-25 · 超过10用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:30.2万
展开全部
可以用反射
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式