一个关于反射的问题,比较急,请高手们回答是否可实现....

tcrct 2008-03-10 07:15:24
现在一段这样的程序:

String hqlStr = "select " + hql.toString().substring(0, hql.toString().length()-1) + " from " + VoName;

System.out.println(hqlStr); //打印为:select id,name,account,pwd from Users

List list = service.getList(hqlStr,0,10);//将hqlStr传到另一个类里,用查询返回一个List集合

System.out.println(Tools.getHqlXmlNodeValue("boPath")+"."+VoName); //打印出是:com.mywebspace.bo.Users

Class iClass = Class.forName(Tools.getHqlXmlNodeValue("boPath")+"."+VoName);

Object myclass = iClass.newInstance();

Method[] method = myclass.getClass().getMethods();
for(int i=0; i<method.length; i++){
String name = method[i].getName();
if(!name.startsWith("set")){ continue;}
System.out.println("=====: "+name); //打印出所有Users类里的set方法
}

平时我们返回一个list集合的话,一般都是
for(int i=0; i<list.size(); i++){
Users u = (Users)list.get(i);
....
}
这样的,现因为Users对象不能写死,要动态的根据传过来的字符串再用Class.forName()来实例出来,也就是想让它变成:
myclass u = (myclass )list.get(i);
这样,请问,这个是否可行.如何实现?谢谢!
...全文
44 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Squall1009 2008-03-11
  • 打赏
  • 举报
回复
应该是可以行的。
但是你表达的太不清楚了。
有点不是很清楚你想表达的问题
soonner 2008-03-11
  • 打赏
  • 举报
回复
使用Class类里面的cast方法转型就可以了.然后方法调用依然得用到Class里面的相关方法,不能直接调用,因为编译器将一直视做Object.也可以使用泛型.

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧