今天老师写了个类对象的例子.. 自己写了遍..还是有很多地方不懂
import java.lang.reflect.*;class A{
public void fn(String str,int inn){
System.out.println ("fn:"+str+":"+inn);
}
public void gn(){
System.out.println ("gn");
}
}
public class ClassObject{
public static void main(String[]args)throws Exception{
Class c1=Class.forName("A");
Class [] cla=new Class[2];
int i=0;
cla[i++]=Class.forName("java.lang.String");
cla[i++]=Integer.TYPE;
Method m1=c1.getMethod("fn",cla);
Object []objs=new Object[2];
objs[0]="hello,world";
objs[1]=10;
m1.invoke(c1.newInstance(),objs);
}
}
希望大家能为我解释下

解决方案 »

  1.   

    m1.invoke(c1.newInstance(),objs);
    m1是名为fn,带两个指定参数类型的方法对象 
    invoke为反身调用位于指定实例c1.newInstance()之上,同时也指定了方法实参
      

  2.   

    Method m1=c1.getMethod("fn",cla); //m1是相当于fn的一个Method对象 
    //Method getMethod(String name,Class... prarmTypes) 因为方法可以重载 所以可以指定方法中参数的Class类型 m1.invoke(c1.newInstance(),objs); 
    //其实就是换个花样调用fn()方法 m1是代表fn()的,c1.newInstance()是创建一个c1类型的实例,相当于new了个A()出来,objs是传递给fn()的参数,整个相当于 
    A xx=new A(); //new 个对象出来看的清楚点 m1.invoke(xx,objs); 
    xx.fn(objs[0],objs[1]);
      

  3.   

    如果fn是static的 就不用c1.newInstance()了 可以用null替代 m1.invoke(null,objs);  
      

  4.   

    搂主!为什么不去问老师啊,老师当面给你讲,啥都能说清楚
    靠CSDN上的哥们们给你在这遨述,多费劲啊而且你应该多看jdk的文档!!!!!!