有一个工程:
  1 目录程序  form
  2 执行程序1 form11
  3 执行程序2 form22
  4 执行程序3 form33
  5 执行程序4 form44
  。
在目录程序中调用执行程序:
  // 直接写执行程序名时可以正常运行
     例如调用执行程序1
form11 formwork = new form11(null);
if (! formwork .isShowing())
{
   formwork .setVisible(true);
}
     例如调用执行程序2
form22 formwork = new form22(null);
if (! formwork .isShowing())
{
   formwork .setVisible(true);
}
      。。
   我想把执行程序名称等信息在外部文件管理,调用时用参数形式
      String FrameName = workName[i]; //i为1时调用执行程序1。
      //Object objName = Class.forName(FrameName).newInstance();
      FrameName  formwork = new FrameName (null); (这行出现错误,要我定义FrameName名的Class) 
     if (! formwork .isShowing())
    {
formwork .setVisible(true);
    }
   怎么改正这段代码,希望高手指点一下

解决方案 »

  1.   

    补充说明:
    workName[i]的内容为{form11,form22,form33,for44,.....}
    实现功能:
      原来分开写的代码,现在汇总写。
      

  2.   

    补充:
    workName[]的内容是执行程序的程序名(String型)
     例如{form11,form22,form33......}
      

  3.   

    1.String FrameName = workName[i]; 
    2.FrameName  formwork = new FrameName (null); (这行出现错误,要我定义FrameName名的Class)
    LZ,你这段代码肯定有问题了,因为你在第一段代码的地方将FrameName定义为String类型了
    然后第二段代码FrameName又变成了Class对象,所以当然会报这个错误啦
      

  4.   

    是这个低级错误。
    可是怎么如下的定义也不行
       Class formwork  =  Class.forName(workName[i]);  
       formwork  formwork = new formwork(null);//还是要求定义FrameName名的Class   if (! formwork.isShowing())
       {
          formwork.setVisible(true);
       }
      

  5.   

    如何把String型转化成Class型?
    有知道的朋友请指点一下。
      

  6.   


    Object[] obj = new Object[]{new form11(null),new form22(null),new form33(null),new form44(null)};
    for(int i=0; i<obj.length; i++){
        if (! obj[i].isShowing()){
            obj[i].setVisible(true);
        } 
    }
    不知道上面的代碼可不可行,LZ試試吧!
    估計從IF開始可能不行了,因為你所有的都不是一個class類型,所以
      

  7.   

    不行呀,
    即使这么定义可以的话workName[i]就毫无意义了。
    如果子程序有上百个怎么办呀?
      

  8.   


    你自己开始都说这么定义的啊,我只不过是new出一个实例而已,看你自己的需求咯,我没办法了
      

  9.   

    workName[i]的内容为{form11,form22,form33,for44,.....} 
    里面定义的是字符串