如何用变量名来代替类实例化时的类名
比如有一命令:
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