读书人

创办与字符串同名的类的实例

发布时间: 2011-12-21 23:56:01 作者: rapoo

创建与字符串同名的类的实例
如下:

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实现

读书人网 >J2SE开发

热点推荐