定义
JAVA反射机制是在运行状态中,对于任意的一个类,都能够知道这个类的所有属性和方法;对于任意的一个类,都能够调用这个类的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制;
用途
在日常的第三方应用开发过程中,经常会遇到某个类的某个成员变量、方法、构造方法是私有的或是只对系统内开放,这时就可以利用java的反射机制通过反射来获取所需的私有方法和属性;但是也不是所有的的都适合反射,对于没有权限的应用返回值是没有任何意义的缺省值;
反射机制的相关类
- class类:代表类的实体,在运行的java应用程序中表示类和接口;
- field类:代表类的成员变量(成员变量也称为类的属性)
- method类:代表类的方法;
- constructor类:代表类的构造方法;
class类
获得类相关的方法
- asSubclass(Class<U> clazz)把传递的类的对象转换成代表其子类的对象;
- cast 把对象转换成代表类或是接口的对象;
- getClassLoader() 获得类的加载器;
- getClasses() 返回一个数组,数组中包含该类中所有公共类和接口类的对象;
- getDeclaredClasses() 返回一个数组,数组中包含该类中的所有类和接口类的对象;
- forName(String className) 根据类名返回类的对象;
- getName() 获得类的完整路径名字;
- newInstance() 创建类的实例;
- getPackage()获得类的包;
- getSimpleName() 获得类的名字;
- getSuperclass() 获得当前类继承的父类的名字;
- getInterfaces() 获得当前类实现的类或是接口;
获得类中属性相关的方法
- getField(String name) 获得某个共有的属性对象;
- getFields() 获得所有共有的属性对象;
- getDeclaredField(String name) 获得某个属性对象;
- getDeclaredFields() 获得所有属性对象;
获得类中注解相关的方法;
- getAnnotation(Class<U> annotationClass) 返回该类中与参数类型相匹配的共有注解对象;
- getAnnotations() 返回该类中所有的共有注解对象;
- getDeclaredAnnotation(Class<U> annotationClass) 返回该类中于参数类型匹配的注解对象;
- getDeclaredAnnotations() 返回该类中所有的注解对象;
获得类中构造器相关的方法;
- getConstructor(Class..<?> parameterTypes)获得该类中与参数类型匹配的共有构造方法;
- getConstructors() 获得该类的所有共有构造方法;
- getDeclaredContructor(Class..<?> parameterTypes) 获得该类中与参数类型匹配的构造方法;
- getDeclaredConstructor()获得该类中所有构造方法;
获得类中方法的相关方法;
- getMethod(String name,Class..<U> parameterTypes) 获得该类中的某个共有方法;
- getMethods() 获得该类中的所有共用方法;
- getDeclaredMethod(String name,Class..<U> parameterTypes) 获得该类中的某个方法;
- getDeclaredMethods() 获得该类中的所有方法;
类中其他的重要方法;
- isAnnotation()如果是注解类型则返回true;
- isAnnotationPresent(Class<? extends Annotation> annotationClass)如果是指定类型的注解则返回true;
- isAnonymousClass() 如果是匿名内部类则返回true;
- isArray() 如果是一个数组类型则放回true;
- isEnum()如果是枚举类型则返回true;
- isInstance(Object obj)如果是obj是当前类的实例则返回true;
- isInterface()如果当前类是接口类型则返回true;
- isLocalClass()如果是局部类则返回true;
- isMemberClass() 如果是内部类则返回true;
filed类
- equals(Object obj)属性和obj相等则返回true;
- get(Object obj)获取obj中对应的属性值;
- set(Object obj,Object value)设置obj中对应属性的值
Method 类
- invoke(Object obj,Object... args)传递object对象及参数调用该对象的方法;
constructor类
- newInstance(Object initargs) 根据传递的参数创建类的对象;
网友评论