你不需要知道是什么类,只要知道是什么方法就好了
用java.lang.reflect.Method
Method method = servletclass.getMethod(methodName, ParamTypeList[]);
method.invoke(cc, ParamValueList[]);

解决方案 »

  1.   

    楼上说的对
    Class servletclass = Class.forName(ss);
    Method method = servletclass.getMethod(methodName, ParamTypeList[]);Object o = servletclass.newInstance();
    method.invoke(o, ParamValueList[]);
      

  2.   

    java的反射机制
    看看jdk的java.lang.reflect类
    里面有Method,Constructor和Field等class
    可以用Constructor产生新对象,然后用get和set读取或设定相应于Field对象的数据值
    也可以用invoke调用相应于Method对象的函数thinking in java里专门有一章讲rtti的
      

  3.   

    用接口行不行,那些不同的类都实现同一个接口,接口实现同一个init()方法
    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();
    }
      

  4.   

    采用这种方法的话会无法识别methodName,编译无法通过。
      

  5.   

    大家的讨论让我大开眼界,pxboy(阿土仔)采用interface的方法可能更加实际一些吧
      

  6.   

    写了一下思路,是Method / class的基本用法,应该对你有所帮助Class tempClass = Class.forName(str);
                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