Java的反射的一些基本操作

一个Java类被加载的时候,JVM会创建一个与之对应的Class类,这个类可以反映Java类的所有信息。Class类只会加载一次,所有对应类的对象都是同一个Class类。

Class c = Class.forName(); //获得类的Class类
Field f = c.getField(); //获得public属性
Field f = c.getDeclaredField(); // 获得类所有的属性名称
获得方法:
形式与获得属性一致,需要将Field换成Method
Method m = c.getDeclaredMethod(方法名称, 参数类型.class);
Constructor则是构造器

使用反射动态构造类:
Class c = (Class) Class.forName();
Obj o = c.newInstance(); // 实际调用的就是类的无参构造方法
// 指定构造器创建类对象
Constructor cons = c.getDeclaredConsturctor(参数.class, …);
Obj demo = cons.newInstance(参数,…);

使用反射调用类的普通方法:
Class c = (Class) Class.forName();
Obj demo = c.newInstance();
demo.method(); // 快捷调用
// 通过反射动态调用
Method m = c.getDeclaredMethod(方法名称, 参数类型.class);
m.invoke(); //启动
// 通过反射直接操作类的属性:
Field f = c.getDeclaredField(属性名);
f.setAccessible(true); // 使用这个函数后可以直接操作私有变量
f.set(对象名,设置值);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章