java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制
Class是一个类,封装了当前对象所对应的类的信息
Class类是一个对象照镜子的结果,对象可以看到自己有哪些属性,方法,构造器,实现了哪些接口等等
对于每个类而言,JRE都为其保留一个不变的Class类型的对象,一个Class对象包含了特定某个类的有关信息
Class对象只能由系统建立对象,一个类(而不是一个对象)在JVM中只会有一个Class实例
获取Class对象的三种方式:
通过类名获取 类名.class
通过对象获取 对象名.getClass()
通过全类名获取 Class.forName(全类名)
Class类的常用方法:
static Class forName(String name) 返回指定类名name的Class对象
Object newInstance() 调用缺省构造函数,返回该Class对象的一个实例
Object newInstance(Object []args) 调用当前格式构造函数,返回该Class对象的一个实例
getName() 返回此Class对象所表示的实体(类、接口、数组类、基本类型或void)名称
Class getSuperClass() 返回当前Class对象的父类的Class对象
Class [] getInterfaces() 获取当前Class对象的接口
ClassLoader getClassLoader() 返回该类的类加载器
Class getSuperclass() 返回表示此Class所表示的实体的超类的Class
关于Method:
如何获取Method: getDeclaredMethods得到Method的数组,getDeclaredMethod(String methondName, Class ... parameterTypes)
如何调用Method: 如果方法时private修饰的,需要先调用Method的setAccessible(true),使其变为可访问,method.invoke(obj, Object ... args)
关于Field:
如何获取Field: getField(String fieldName)
如何获取Field的值: setAccessible(true), field.get(Object obj)
如何设置Field的值: field.set(Obejct obj, Object val)
java反射简述
最新推荐文章于 2024-04-20 09:20:19 发布