ZPY博客

java 反射的使用

Class c=Class.forName("AbstractClassTest.Car"); //要包名+类名
  Object o=c.newInstance();
  Car car=(Car)o;
  Field[] fields=c.getDeclaredFields();//拿到数据成员
  Method[] methods=c.getMethods();//拿到函数成员
  /*System.out.println(fields.length);
  System.out.println(methods.length);*/
  for(Field f : fields){
   System.out.println("该类的内部变量有:"+f.getName());
  }
  for(Method m : methods) {
   System.out.println("该类的方法有:"+m.getName());
  }

import java.lang.reflect.*;
public class Test{
  public static void main(String args[]) throws Exception{
    Class c=Class.forName("TaskProvidePropsList");
    Object obj=c.newInstance();
    //set
    Method msetid=c.getMethod("setProvide_id",Integer.TYPE);
    msetid.invoke(obj,new Integer(100));
    Method msetsign=c.getMethod("setProps_sign",Integer.TYPE);
    msetsign.invoke(obj,new Integer(100));
    //get
    Method mgetsign=c.getMethod("getProps_sign");
    Integer sign=(Integer)mgetsign.invoke(obj);
    Method mgetid=c.getMethod("getProvide_id");
    Integer id=(Integer)mgetid.invoke(obj);
    //打印
    System.out.println("Props_sign:"+sign.intValue());
    System.out.println("Provide_id:"+id.intValue());
  }
}