说明一下,bootid 是执行java文件时传入的参数!

解决方案 »

  1.   

    Class cls = Class.forName("com.xxx.xxx.xxx.xxx.xx." + classNM );
    根据类名得到一个类的Class属性,这个类里面包含的Java类的元数据信息
     Class[] prm1 = new Class[1];
    prm1[0] = MOBatComInfo.class;
    这个不用说了吧
     Method meth = cls.getMethod("start",prm1);
    得到类com.xxx.xxx.xxx.xxx.xx的某个方法,其中这个方法名称为start,参数为MOBatComInfo类型,如
    start(MOBatComInfo arg0);
     Class[] prm2 = new Class[1];
    prm2[0] = String.class;
    Constructor crt = cls.getConstructor( prm2 );
    得到类com.xxx.xxx.xxx.xxx.xx的构造函数,其中参数为String类型,如:
    XXX(String arg0) Object[] initArgs = new Object[]{bootID};
    Object myobj = crt.newInstance( initArgs );
    使用传入的参数调用上面得到的构造函数得到一个该对象的实例,类似于代码Object s=new XXX(bootID)
     ret = Integer.parseInt(meth.invoke( myobj, new Object[]{comInfo} ).toString());
    在刚刚实例化的那个对象上调用刚刚得到的方法(start),类似于s.start(comInfo),该方法返回的是Object类型,再调用这个结果的toString()方法,假如将com.xxx.xxx.xxx.xxx.xx固定的话(如MyObject),类似于下面的代码:
    MyObject obj=new MyObject(bootID);
    Object result=obj.start(comInfo)
    String s=result.toString();//结果
      

  2.   

    假设classNM = "Test",该程序效果等同于:
    import com.xxx.xxx.xxx.xxx.xx.*;
    Test myobj = new Test(bootID);
    ret = Integer.parseInt(myobj.start(comInfo).toString());