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; } }
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; } }
Class c = null;
try {
c = Class.forName(className);
Run r = (Run)c.newInstance();
r.initial(param);
return r;
}catch(Exception e) {
throw e;
}
}
Class c = null;
try {
c = Class.forName(className);
Run r = (Run)c.newInstance();
r.initial(param);
return r;
}catch(Exception e) {
throw e;
}
}
initial()方法
{
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){}
相关的是该类的实现里面有个initial()就可以了。
当然也可以用楼上的方法用构造函数初始化。
我个人比较习惯在每个类里面都有initial()。
但我已在要加载的类中定义了该函数了。不知你是怎么实现的?
-----------------------------
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