概念
Java允许其程序在运行期间动态调用事先未知或不确定的数据类型,这种机制称为反射,即反射就是加载类,并解剖出类中的各个部分。应用
struts、spring、hibernate等主流框架中。功能
1)运行判断Java对象的类型
2)动态加载编译时不确定的Java类
3)动态解析编译时不确定的Java类,进而操作该类及其实例,包括创建队形,访问属性和方法。加载类的三种方式
1)Class c=Class.forName(“”);
2)Person p=new Person();
Class c=p.getClass();
3) Class c=Person.class;解剖类
如果是公有成员,则用getConstructor,getMethod,getField即可,如果是私有成员,则用getDeclaredConstructor,getDeclaredMethod,getDeclaredField。6.反射构造函数
1)加载类
Class clazz=Class.forName(“包名.类名”);
2)获取构造函数
Constructor c=clazz. getConstructor(String.class);
3)实例化一个对象
Person p=(Person)c.newInstance(“张三”);反射方法
1)加载类
2)获取方法
Method method=clazz.getMethod(“aa”,String.class);
3)执行方法
method.invoke(new Person(),”zhangsan”);反射字段
1)加载类
2)获取字段
Field f=clazz.getField(“name”);
获取字段的值
Object o=f.get(new Person());
获取字段的类型
Class type=f.getType();
本文只是简单的总结了反射的内容,希望大家提出宝贵意见。后续还会有其他关于java的内容更新~