2018-09-13

//放射的相关知识

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();

}

}

}

你可能感兴趣的:(2018-09-13)