你不需要知道是什么类,只要知道是什么方法就好了
用java.lang.reflect.Method
Method method = servletclass.getMethod(methodName, ParamTypeList[]);
method.invoke(cc, ParamValueList[]);
用java.lang.reflect.Method
Method method = servletclass.getMethod(methodName, ParamTypeList[]);
method.invoke(cc, ParamValueList[]);
Class servletclass = Class.forName(ss);
Method method = servletclass.getMethod(methodName, ParamTypeList[]);Object o = servletclass.newInstance();
method.invoke(o, ParamValueList[]);
看看jdk的java.lang.reflect类
里面有Method,Constructor和Field等class
可以用Constructor产生新对象,然后用get和set读取或设定相应于Field对象的数据值
也可以用invoke调用相应于Method对象的函数thinking in java里专门有一章讲rtti的
public void MakeClass(String ss) {
Class servletclass = Class.forName(ss);
//无法使用动态根据不同的ss创建实例,java中是否有方法解决这个问题
InterfaceName cc = (InterfaceName)servletclass.newInstance();
cc.init();
}或者,
public Object MakeClass(String ss) {
Class servletclass = Class.forName(ss);
//无法使用动态根据不同的ss创建实例,java中是否有方法解决这个问题
Object cc = (Object)servletclass.newInstance();
return cc;
}
以后再根据ss的名字,进行相应的强制类型转换:
if(ss.equals("ClassName"))
{
ClassName class1 = (ClassName)MakeClass(ss);
class1.method1();
}
else if(ss.equals("ClassName1"))
{
ClassName1 class2 = (ClassName1)MakeClass(ss);}
class2.method2();
}
Object obj = tempClass.newInstance();
Method[] method = tempClass.getMethods();
for (int j = 0; j < method.length; j++) {
if (method[j].getName().equals("printMe")) {
String[] args = {//give your method args
};
method[j].invoke(obj, (Object[]) args);
}
}
程序中控制你所想要拿到的ClassName , Method Name ,Method args