在runable(className)中定义一个类变量String getParam。在runable start()之前把parameters值赋给runable(className)中预先定义的变量getParam。

解决方案 »

  1.   

    因为java中new线程的时候只是初始化线程类变量,线程真正运行的是在调用start()之后。
      

  2.   

    public static void factory(className,param) {     
                      Class c = null;
    try {
    c = Class.forName(className);
    Run r = (Run)c.newInstance();
    r.initial(param);
    return r;
    }catch(Exception e) {
    throw e;
    }
             }
      

  3.   

    public  static  Run  factory(className,param) throws Exception {          
          Class  c  =  null;
          try  {
            c  =  Class.forName(className);
            Run  r  =  (Run)c.newInstance();
            r.initial(param);
            return  r;
          }catch(Exception  e)  {       
            throw  e;
          }
    }
      

  4.   

    GJA106(中文字符) 怎么赋值给 getParam 难到用 runable.getParam。这好像不行把?camry_camry(camry) 请问你的意思是不是重新定义一个接口,在接口中定义
    initial()方法
      

  5.   

    public className();**try
    {
        Class cls = Class.forName(className);
        Class[] cs = new Class[1];
        cs[1] = java.lang.String.class;
        Constructor ctr = cls.getConstructor(cs);
        Object obj = ctr.newInstance(param);}catch(Exception e){}
      

  6.   

    定义不定义接口不相关。
    相关的是该类的实现里面有个initial()就可以了。
    当然也可以用楼上的方法用构造函数初始化。
    我个人比较习惯在每个类里面都有initial()。
      

  7.   

    camry_camry(camry) 好像不行阿,编译的时候总是提示没有该函数,
    但我已在要加载的类中定义了该函数了。不知你是怎么实现的?
      

  8.   

    好像是只能调用接口中的方法,要调用其他的方法,只能用class.getDefaultMethod(String name) 把类找到后再加载!
      

  9.   

    不应该阿,我调用的时候没有问题。
    -----------------------------
    package classes;file1.java
    public class file1 {
         f(int i) { System.out.println(i); }
    } // file1.classfile2.java
    public class file2 {
         static file1 factory(int i) throws Exception{
                   Class c = Class.forName("classes.file1");
                   file1 f = (file1)c.newInstance();
                   f.f(i);
                   return f;
         } // factory(int)
         
         public static void main(String[] args) {
              try { 
                   file1 f = factory(47);
                   f.f(48);
              } catch (Exception e) {
                   e.printStackTrace();
              }
         } // main()
    } // file2.class