日期:2014-05-20  浏览次数:20587 次

如何用变量名来代替类实例化时的类名
比如有一命令:
call.registerTypeMapping(MyArryBean.class,   qn,
                        new   BeanSerializerFactory(MyArryBean.class,   qn),
                        new   BeanDeserializerFactory(MyArryBean.class,   qn));

...
MyArryBean   CmyAB=new   MyArryBean();
CmyAB   =   (MyArryBean)   call.invoke(new   Object[]   {   "这是调用服务器的类!web "   });

而“MyArryBean”我不能够手写上去,只能通过调用数据库里面的字段来取得:
访问数据库得到数据集,再取得数据集里面的数据给String类型的变量   a   然后用   a来代替类“MyArryBean   ”所在的位置:

call.registerTypeMapping(a.class,   qn,
                        new   BeanSerializerFactory(a.class,   qn),
                        new   BeanDeserializerFactory(a.class,   qn));

...
aCmyAB=new   a();
CmyAB   =   (a)   call.invoke(new   Object[]   {   "这是调用服务器的类!web "   });

这应该如何处理呢?

------解决方案--------------------
申明基类MyArryBean, 你要用的类全部从基类继承.

MyArryBean beanA = (MyArryBean)Class.forName(a).newInstance();
然后就可以使用beanA.

不过你的代码:
MyArryBean CmyAB=new MyArryBean();
CmyAB = (MyArryBean) call.invoke(new Object[] { "这是调用服务器的类!web " });
明显有问题,前面new出来,然后又赋值,这个 "new "有什么意义?
单纯从这个来看,写成以下这个方式才对:
yArryBean CmyAB=(MyArryBean) call.invoke(new Object[] { "这是调用服务器的类!web " });
------解决方案--------------------
可不可以用Class.forName( 'a ');
------解决方案--------------------
用reflect