本文共 1287 字,大约阅读时间需要 4 分钟。
什么是Java的反射机制
Java的反射机制,是指在Java程序运行时,动态获取和访问类和对象的属性、方法等自身信息的功能机制。
认识Class
Class即元类,是用来描述类的类,Class类的每一个对象负责描述一个类。
Class对象的获取
通用的Class的对象获取方式有三种
- 通过类的静态属性class获取,例如:Class c1 = String.class;
- 通过字符串形式的类的全限定名称获取,例如 Class c2 = Class.forName(“java.lang.String”);
- 通过类的对象获取,例如 Class c3 = new String(“abc”).getClass();
专用于描述包装类的Class对象的方式:Class c = Integer.TYPE;
注意:同一个类加载器下,无论以何种方式获得的描述同一个类的元类对象都是同一个对象。
Class的方法
- 实例方法getName():获得元类对象所描述类的全限定名称;
- 实例方法getSimpleName():获得元类对象所描述类的简称(即不带包的类名)
- 实例方法newInstance() : 创建元类对象所描述类的对象,前提是所描述类具有public的无参构造方法;
- 实例方法getField(String):根据元类对象所描述类的属性名称,获取public属性的描述对象(Field类的对象);
- 实例方法getFields():获取元类对象所描述类的所有public属性的描述对象。
- 实例方法getMethod(String, Class…):根据元类对象所描述类的方法名称和参数类型,获取public方法的描述对象(Method类的对象);
- 实例方法getMethods():获取元类对象所描述类的所有public方法的描述对象;
- 实例方法getConstructor(Class…):根据元类对象所描述类的构造参数类型,获取public构造方法的描述对象(Constructor类的对象);
- 实例方法getConstructors():获取元类对象所描述类的所有public构造方法的描述对象。
认识Field类
Field类是属性的描述类,每一个Field对象描述一个属性。
Field类的常用方法
- 实例方法set(Object obj, Object value):给Field对象所描述属性赋值;
- 实例方法get(Object obj):获取Field对象所描述属性的值。
认识Method类
Method类是方法的描述类,每一个Method对象描述一个方法。
Method类常用方法
- 实例方法getName():获得Method对象所描述方法的名称;
- 实例方法getParameterCount():获得Method对象所描述方法的参数数量;
- 实例方法Class[] getParameterTypes():获得Method对象所描述方法的参数类型;
- 实例方法invoke(Object, Object…):执行Method对象所描述方法。
转载地址:http://vnhdi.baihongyu.com/