一、功能
- 在运行时判断任意一个对象所属的类
- 在运行时构造任意一个类的对象
- 在运行时判断任意一个类所具有的成员变量和方法
- 在运行时调用任意一个对象的方法
- 生成动态***
二、性能问题
void setAccessible(boolean flag):是否启用访问安全检查的开关,true屏蔽Java语言的访问检查,使得对象的私有属性也可以被查询和设置。
禁止安全检查,可以提高反射的运行速度
三、示例
1.示例一
package org.bing.learn.book.反射;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Apple {
private int price;
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public static void main(String[] args) throws Exception{
Class clz=Class.forName("org.bing.learn.book.反射.Apple");
Constructor cst=clz.getConstructor();
Object obj=cst.newInstance();
Method setMd=clz.getMethod("setPrice", int.class);
setMd.invoke(obj, 24);
Method getMd=clz.getMethod("getPrice");
System.out.println("苹果价格:"+getMd.invoke(obj));
Field[] fds=clz.getDeclaredFields();
for(Field field:fds){
System.out.println("属性:"+field.getName());
}
}
}