Class<?> c = Class.forName("my.Test2");
Object obj = c.newInstance();
Method m = c.getMethod("show", String.class,int.class);
m.invoke(obj, "aa",1);public class Test2 { public void show(Object...args){
System.out.println(args.length);
}
}
异常信息
java.lang.NoSuchMethodException: my.Test2.show(java.lang.String, int)Method m = c.getMethod("show", String.class,int.class); 这里要怎样写?问题2 Class<?> c = Class.forName("my.Test2"); 如果不带包名,只有类名 怎样能正常加载并实例化

解决方案 »

  1.   

    Method m = c.getMethod("show", new Object[0]().getClass());试试看
      

  2.   


    Method m = c.getMethod("show", Object[].class);
    m.invoke(obj, (Object)new Object[]{"aa",1});
      

  3.   

    Method m = c.getMethod("show", new Class[]{String.class,int.class});
      

  4.   

    Class对象也可以用Class<?> c3=Test2.class;//这个类必须包内可见还有一种获取class实例的方式是通过"对象.getClass()"获取。
      

  5.   


    类型 Class<capture#3-of ?> 中的方法 getMethod(String, Class<?>...)对于参数(String, Object)不适用
      

  6.   


    还是异常java.lang.NoSuchMethodException: my.Test2.show(java.lang.String, int)
      

  7.   

    c.getMethod("show", new Class[]{new Object[0].getClass()});
    或者
    c.getMethod("show", new Object[0].getClass());
    这样才对
      

  8.   


    没问题啊。。public class Test {
    public static void main(String[] args) {

    try {
    Class c = Class.forName("com.test.exam.Test2");
    Object obj = c.newInstance(); 
    Method m = c.getMethod("show", Object[].class);
    m.invoke(obj, (Object)new Object[]{"aa",1});

    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();

    }
    }class Test2 { public void show(Object... args) {
    System.out.println(args.length); //输出2
    }
    }
      

  9.   


    package my;
    public class Test2 {
        public void show(Object...args){
            System.out.println(args.length);
        }
    }
    package my;
    import java.lang.reflect.Method;
    public class Test {
        public static void main(String[] args)throws Exception {
            Class<?> c = Class.forName("my.Test2");
            Object obj = c.newInstance();
            Method m = c.getMethod("show", Object[].class); 
            m.invoke(obj, (Object)new Object[]{"aa",1}); 
        }
    }
    输出结果:2
      

  10.   

    10楼的确实可以,,不知道怎么搞错了。我的第2个问题呢?
    Class<?> c = Class.forName("my.Test2");不写包名,怎样才可以加载类
    Class<?> c = Class.forName("Test2");
    Java codepackage my;
    import java.lang.reflect.Method;
    public c……
    [/Quote]
      

  11.   


      Method m = c.getMethod("show", String.class,int.class);
                m.invoke(obj, "aa",1);