I recently discovered that there is a method I haven’t seen before. Baidu took a look and found that there are more methods I haven’t seen before. Test it locally today:
Method summary:
<U> Class<? extends U> asSubclass(Class<U> clazz) //强制转换此Class对象以表示由指定类对象表示的类的子类。
T cast(Object obj) //将一个对象强制转换为此Class对象表示的类或接口。
boolean desiredAssertionStatus() //返回在调用此方法时要初始化的断言状态。
static Class<?> forName(Module module, String name) //返回Class给定模块中具有给定 二进制名称的。
static Class<?> forName(String className) //返回Class与具有给定字符串名称的类或接口关联的对象。
static Class<?> forName(String name, boolean initialize, ClassLoader loader) //Class使用给定的类加载器返回与具有给定字符串名称的类或接口关联的对象。
AnnotatedType[] getAnnotatedInterfaces() //返回一个AnnotatedType对象数组,这些对象表示使用类型指定此Class对象表示的实体的超接口 。
AnnotatedType getAnnotatedSuperclass() //返回一个AnnotatedType对象,该对象表示使用类型指定此 Class对象表示的实体的超类。
<A extends Annotation> A getAnnotation(Class<A> annotationClass) //返回该元素的,如果这样的注释指定类型的注释本,否则返回null。
Annotation[] getAnnotations() //返回此元素上存在的注释。
<A extends Annotation> A[] getAnnotationsByType(Class<A> annotationClass) //返回与此元素关联的注释。
String getCanonicalName() //返回Java语言规范定义的基础类的规范名称。
Class<?>[] getClasses() //返回一个包含Class对象的数组,这些对象表示所有公共类和接口,这些公共类和接口是此Class对象表示的类的成员。
ClassLoader getClassLoader() //返回该类的类加载器。
Class<?> getComponentType() //返回Class表示数组的组件类型的信息。
Constructor<T> getConstructor(Class<?>... parameterTypes) //返回一个Constructor对象,该对象反映此Class 对象表示的类的指定公共构造方法。
Constructor<?>[] getConstructors() //返回一个包含Constructor对象的数组,这些对象反映此Class对象表示的类的所有公共构造 函数。
<A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass) //如果直接存在此元素的注释,则返回指定类型的注释,否则返回null。
Annotation[] getDeclaredAnnotations() //返回直接存在于此元素上的注释。
<A extends Annotation> A[] getDeclaredAnnotationsByType(Class<A> annotationClass) //如果直接存在或 间接存在,则返回指定类型的此元素的注释。
Class<?>[] getDeclaredClasses() //返回一个Class对象数组,该对象反映了所有声明为该Class对象表示的类成员的所有类和接口。
Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) //返回一个Constructor对象,该对象反映此Class对象表示的类或接口的指定构造 函数。
Constructor<?>[] getDeclaredConstructors() //返回一个Constructor对象数组,该对象反映此Class对象表示的类声明的所有构造 函数。
Field getDeclaredField(String name) //返回一个Field对象,该对象反映此Class 对象表示的类或接口的指定声明字段。
Field[] getDeclaredFields() //返回一个Field对象数组,该对象反映此Class对象表示的类或接口声明的所有字段 。
Method getDeclaredMethod(String name, Class<?>... parameterTypes) //返回一个Method对象,该对象反映此Class对象表示的类或接口的指定声明方法 。
Method[] getDeclaredMethods() //返回一个包含Method对象的数组,这些对象反映此 Class对象表示的类或接口的所有已声明方法,包括公共,受保护,默认(程序包)访问和私有方法,但不包括继承的方法。
Class<?> getDeclaringClass() //如果此Class对象表示的类或接口是另一个类的成员,则返回Class表示在其中声明该类的对象的对象。
Class<?> getEnclosingClass() //返回基础类的直接封闭类。
Constructor<?> getEnclosingConstructor() //如果此Class对象表示构造函数中的本地或匿名类,则返回一个Constructor对象,该对象表示基础类的直接封闭的构造函数。
Method getEnclosingMethod() //如果此Class对象表示方法中的本地或匿名类,则返回一个Method表示基础类的直接封闭方法的对象。
T[] getEnumConstants() //返回此枚举类的元素;如果此Class对象不表示枚举类型,则返回null。
Field getField(String name) //返回一个Field对象,该对象反映此Class 对象表示的类或接口的指定公共成员字段。
Field[] getFields() //返回一个包含Field对象的数组,这些对象反映了此Class对象表示的类或接口的所有可访问公共字段。
Type[] getGenericInterfaces() //返回Types,它们表示由该对象表示的类或接口直接实现的接口。
Type getGenericSuperclass() //返回Type由this表示的实体的直接超类(类,接口,原始类型或void)Class。
Class<?>[] getInterfaces() //返回由该对象表示的类或接口直接实现的接口。
Method getMethod(String name, Class<?>... parameterTypes) //返回一个Method对象,该对象反映此Class对象表示的类或接口的指定公共成员方法 。
Method[] getMethods() //返回一个包含Method对象的数组,这些对象反映了此 Class对象表示的类或接口的所有公共方法,包括由类或接口声明的对象以及从超类和超接口继承的对象。
int getModifiers() //返回此类或接口的Java语言修饰符,以整数编码。
Module getModule() //返回该类或接口所属的模块。
String getName() //返回此Class对象表示的实体的名称(类,接口,数组类,原始类型或void),以表示String。
Package getPackage() //获取此类的包。
String getPackageName() //返回标准软件包名称。
ProtectionDomain getProtectionDomain() //返回ProtectionDomain此类的。
URL getResource(String name) //查找具有给定名称的资源。
InputStream getResourceAsStream(String name) //查找具有给定名称的资源。
Object[] getSigners() //获取此类的签名者。
String getSimpleName() //返回源代码中给定的基础类的简单名称。
Class<? super T> getSuperclass() //返回Class由this表示的实体的直接超类(类,接口,原始类型或void)Class。
String getTypeName() //返回此类型名称的信息字符串。
TypeVariable<Class<T>>[] getTypeParameters() //以声明顺序返回一个TypeVariable对象数组,这些对象数组表示此GenericDeclaration对象表示的通用声明所声明的类型变量 。
boolean isAnnotation() //如果此Class对象表示注释类型,则返回true 。
boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) //如果此元素上存在指定类型的注释,则返回true ,否则返回false。
boolean isAnonymousClass() //true当且仅当基础类是匿名类时才返回。
boolean isArray() //确定此Class对象是否代表数组类。
boolean isAssignableFrom(Class<?> cls) //确定此Class对象表示 的类或接口是否与指定Class参数表示的类或接口相同或超类或超接口 。
boolean isEnum() //当且仅当在源代码中将该类声明为枚举时,才返回true。
boolean isInstance(Object obj) //确定指定Object的对象是否与此this表示的对象赋值兼容Class。
boolean isInterface() //确定指定的Class对象是否代表接口类型。
boolean isLocalClass() //true当且仅当基础类是本地类时才返回。
boolean isMemberClass() //true当且仅当基础类是成员类时才返回。
boolean isPrimitive() //确定指定的Class对象是否代表原始类型。
boolean isSynthetic() //true如果此类是综合类,则返回;否则,返回false。false否则返回。
T newInstance() //不推荐使用。 此方法传播由nullary构造函数引发的任何异常,包括已检查的异常。使用此方法有效地绕过了编译时异常检查,否则该检查将由编译器执行。该Constructor.newInstance方法通过将构造函数抛出的任何异常包装在(选中)中来避免此问题InvocationTargetException。
通话
clazz.newInstance() 可以替换为
clazz.getDeclaredConstructor().newInstance() //推断后面的调用顺序可以引发其他异常类型InvocationTargetException和NoSuchMethodException。这两种异常类型都是的子类ReflectiveOperationException。
String toGenericString() //返回描述此字符串Class,包括有关修饰符和类型参数的信息。
String toString() //将对象转换为字符串。
Previous: [Java knowledge points detailed 11] reflection
Next article: SpringCloud learning general outline