反射具有哪些常用的API呢?
转自:
http://www.java265.com/JavaCourse/202206/3838.html
下文笔者讲述反射常用API的简介说明,如下所示:
获取构造函数
Connstructor getConstructor(Class<?>... parameterTypes): 返回此Class对象对应类的指定public构造器 Constructor<?>[] getConstructors(): 返回此Class对象对应类的所有public构造器。 Constructor getDeclaredConstructor(Class<?>... parameterTypes): 返回此Class对象对应类的指定构造器,与构造器的访问权限无关 Constructor<?>[] getDeclaredConstructors(): 返回此Class对象对应类的所有构造器,与构造器的访问权限无关
获取方法
Method getDeclaredMethod(String name, Class<?>... parameterTypes): 返回此Class对象对应类的指定方法,与方法的访问权限无关 Method[] getDeclaredMethods(): 返回此Class对象对应类的全部方法,与方法的访问权限无关
获取属性
Field getField(String name): 返回此Class对象对应类的指定public Field Field[] getFields(): 返回此Class对象对应类的所有public Field Field getDeclaredField(String name): 返回此Class对象对应类的指定Field,与Field的访问权限无关 Field[] getDeclaredFields(): 返回此Class对象对应类的全部Field,与Field的访问权限无关
获取Class对应类上所包含的注解
A getAnnotation(Class annotationClass): 试图获取该Class对象对应类上指定类型的Annotation 如果该类型的注释不存在,则返回null Annotation[] getAnnotations(): 返回该Class对象对应类上的所有Annotation Annotation[] getDeclaredAnnotations(): 返回直接修饰该Class对应类的所有Annotation
获取Class对象对应类包含的内部类
Class<?>[] getDeclaredClasses(): 返回该Class对象对应类里包含的全部内部类
获取Class对象对应类所在的外部类
Class<?> getDeclaringClass(): 返回该Class对象对应类所在的外部类
获取Class对象对应类所继承的父类、所实现的接口等
Class<?>[] getInterfaces(): 返回该Class对象对应类所实现的全部接口
获取Class对象对应类所继承的父类
Class<? super T> getSuperclass(): 返回该Class对象对应类的超类的Class对象
获取Class对象对应类的修饰符、所在包、类名等基本信息
int getModifiers(): 返回此类或接口的所有修饰符 修饰符由public、protected、private、final、static、abstract等对应的常量组成 返回的整数应使用Modifier工具类的方法来解码,才可以获取真实的修饰符。 Package getPackage(): 获取此类的包 String getName(): 以字符串形式返回此Class对象所表示的类的名称 String getSimpleName(): 以字符串形式返回此Class对象所表示的类的简称
判断该类是否为接口、枚举、注释类型等
boolean isAnnotation(): 返回此Class对象是否表示一个注释类型(由@interface定义) boolean isAnnotationPresent(Class<? extends Annotation> annotationClass): 判断此Class对象是否使用了Annotation注释修饰 boolean isAnonymousClass(): 返回此Class对象是否是一个匿名类 boolean isArray(): 返回此Class对象是否表示一个数组类 boolean isEnum(): 返回此Class对象是否表示一个枚举(由enum关键字定义) boolean isInterface(): 返回此Class对象是否表示一个接口(使用interface定义) boolean isInstance(Object obj): 判断obj是否是此Class对象的实例,该方法可以完全代替instanceof操作符