如下:public void fun(String str){
if(str.equals("MyForm1")){
MyForm1 theForm = new MyForm1();
}
if(str.equals("MyForm2")){
MyForm2 theForm = new MyForm2();
}
if(str.equals("MyForm3")){
MyForm3 theForm = new MyForm3();
}
if(str.equals("MyForm4")){
MyForm4 theForm = new MyForm4();
}
}
我想用反射实现上面的代码怎么实现public void fun(String str){
Object temp = Class.forName(str).newInstance();
//这里怎么实现啊
}
if(str.equals("MyForm1")){
MyForm1 theForm = new MyForm1();
}
if(str.equals("MyForm2")){
MyForm2 theForm = new MyForm2();
}
if(str.equals("MyForm3")){
MyForm3 theForm = new MyForm3();
}
if(str.equals("MyForm4")){
MyForm4 theForm = new MyForm4();
}
}
我想用反射实现上面的代码怎么实现public void fun(String str){
Object temp = Class.forName(str).newInstance();
//这里怎么实现啊
}
每个MyForm都是一个JavaBean,他在Hibernate配置文件中关联对应的表
且我需要的这些MyForm类的内容是相同的.
Object form = clazz.newInstance();
Method method = clazz.getMethod("methodName", new Class[]{/*参数类型*/});
Object retValue = method.invoke(form, new Object[]{/*实际参数*/});
而这些不同的表的结构是相同的
MyForm myForm = (MyForm) Class.forName(str).newInstance();或
MyForm myForm = new MyForm();
这样的话,我怎么操作对应的表啊??
Abstract BaseForm
{
f1();
f2();
fn();
}然后让所有的Form都继承自该抽象类
class Form1 extends BaseForm{}
class Form2 extends BaseForm{}
依此类推而这段代码:
public void fun(String str){
Object temp = Class.forName(str).newInstance();
//这里怎么实现啊
} 就改成
public void fun(String str){
BaseForm temp = Class.forName(str).newInstance();
} 之后,temp真正是哪个Form,就可以直接使用该Form的功能了,不用进行转换。另:这个方法还可以用接口实现,不过那就用implements实现而不是用extends实现