一、反射是什么?
反射是运行状态中我们可以通过反射获取到类的所有信息,包括构造方法、成员变量、属性、方法等,对其可以进行操作。
二、反射中的一些方法使用。
1.class getName(): 获取全类名,带包名 getSimpleName(): 获取类名 Class.forName("类名全路径"):返回类对象 getPackage(): 获取包名,有前缀package getClassLoader(): 获取类加载器 getClasses(): 获取该类中的公共内部类 getDeclaredClasses(): 获取该类中包含的所有类跟接口,包括非公共的 getSuper(): 获取继承父类类名 getInterfaces(): 获取接口 2.field getFields(): 获取公共字段 getDeclaredFields(): 获取类中的所有字段 getAnnotation(注解.class): 获取注解 3.construction getConstructions(): 获取公共的构造方法 getDeclaredConstructions(): 获取所有的构造方法 getDeclaredConstruction(Class... class): 根据参数的类型获取构造方法 4.method getMethods(): 获取公共方法 getDecleardMethods(): 获取所有的方法 getDeclaredMethod(String name, Class.... params): 根据方法名称跟参数列表获取方法 5.其它方法 isInterface(): 是否是接口 isAnnotation(): 判断是否是注解 isArray(): 是否是数组 isEnum(): 是否是枚举 isAnnotationPresent(Annotation.class): 判断是否有指定注解 6.反射相关方法 setAccessible(true): 设置暴力反射,无视限定符 Field.get(obj): 获取指定对象的field属性值 Field.set(obj, value): 设置obj对象的field属性为value值 Method.invoke(obj, Params.class):执行指定对象的该方法