//放射的相关知识
package Debug;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class One {
public static void main(String[] args) throws Exception{
Class c1=Person.class;
// Class c2=new Person.getclass(); 该种方法错误
try {
Class c3=Class.forName("Debug.Person");
//得到Person的实例
Person p=(Person)c1.newInstance();
//用有参的构造函数得到对象实例
Constructor cs=c1.getConstructor(String.class,String.class);
Person p1=(Person)cs.newInstance("heyao","f");
//通过反射得到属性
Field f1=c1.getDeclaredField("Name"); //根据属性的名称单独的获取
f1.setAccessible(true); //属性私有,设置权限
f1.set(p1,"heyao"); //将对象P1的属性Name设置为heyao
//使用泛型操作普通的方法
Method m1=c1.getMethod("Print"); //得到名为Print的方法
// m1.setAccessible(true); //Print方法为共有的,不需要设置
m1.invoke(p1); //触发事件
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}