创建与字符串同名的类的实例
如下:
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();
//这里怎么实现啊
}
------解决方案--------------------你不是已经实现了吗??
还有什么问题?
------解决方案--------------------晕,我当然知道已经实现了
我是要在不出现 MyForm1,MyForm2...(可能对应100个,那我要判断100次啊)的情况下实现上面的代码!!!
------解决方案--------------------我明白楼主的意思
楼主是要转型到实际的类型对吧
------解决方案--------------------直接返回你的不就行了吗?
------解决方案--------------------用一个比较简单的设计模式实现吧
假设这些Form都有共同的功能f1(),f2()但是其内部实现的机理不一样(比如Form1的f1()计算A公司的东东,Form2的f1()计算B公司的东东)
那么,写一个抽象类 BaseForm
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实现