介绍
java.lang.Class
public final class Class<T> implements java.io.Serializable, GenericDeclaration, Type, AnnotatedElement, TypeDescriptor.OfField<Class<?>>, Constable
- 类Class的实例表示正在运行的 Java 应用程序中的类和接口
- 枚举类和记录类是类的种类
- 注解接口是一种接口
- 数组、原始类型 也表示为 Class 对象
ClassLoader.defineClass(byte[], int, int)
- 每个类的Class对象,在内存中只有一份,因为类只加载一次
- 类实例在堆上,类的字节码二进制数据在方法区上
API
AnnotatedElement
- isAnnotationPresent
- getAnnotation
- getAnnotations
- getAnnotationByType
- getDeclaredAnnotation
- getDeclaredAnnotations
- getDeclaredAnnotationsByType
java.lang.reflect.Type
- getTypeName
- 返回类型名称,对数组类型进行了优化,非数组调用
getName
- 返回类型名称,对数组类型进行了优化,非数组调用
java.lang.invoke.TypeDescriptor
- descriptorString
java.lang.invoke.TypeDescriptor.OfField
- arrayType
- 当前类型对应的数组类型
- componentType
- 数组的元素类型
- isArray
- 是否数组
- isPrimitive
- 是否原始类型,包括 void
Constable
- describeConstable
- 如果可以构造,则返回此实例的标称描述符,如果不能构造,则返回一个空的Optional
GenericDeclaration
- getTypeParameters
- 获取泛型参数,例如 HashMap 的泛型参数是 [K, V]
public
Name
- forName
- 通过类的全限定名获取 Class
- getName
- 返回类型实体名称,根据类型不同,定义不同,参考方法说明
- getSimpleName
- 简单名称
- getTypeName
- 类型名称
- getCanonicalName
- 规范名称
toString
- toString
- toGenericString
- 通过 getTypeParameters 获取泛型参数
继承关系
- isInstance
- 判断入参对象是否是当前类型的实例
- isAssignableFrom
- 确定此Class对象表示的类或接口是否与指定的Class参数表示的类或接口相同,或者是它们的超类或超接口。
- 一般用于判断当前类型是否为入参类型的父类或实现的接口
- 也用于判断是否可以将入参类型转换为当前类型
类型特征
- isInterface
- isArray
- isPrimitive
- isAnnotation
- isSynthetic
- 合成类,synthetic
- Synthetic 类型的类是指由编译器在编译时生成的、用于实现某些特殊功能或优化的类
- 例如,当内部类使用了外部类的私有成员时,编译器会生成一个 synthetic 类来包装内部类,以便访问到外部类的私有成员
- lambda表达式实现的类,例如
Runnable runnable = () -> System.out.println(123);
- isAnonymousClass
- 匿名类
- 例如
Runnable runnable2 = new Runnable() {@Override public void run() {}};
- isLocalClass
- 局部类
- 定义在方法或代码块中的类
- isMemberClass
- 成员类,也就是内部类
- isEnum
- 枚举
- isRecord
- 记录
- isHidden
- 隐藏类
- isSealed
- 密封类
类签名
- getModule
- 返回所属的模块
- getTypeParameters
- 返回泛型类型参数
- getSuperclass
- 返回直接超类
- 如果此Class表示Object类、接口、原始类型或 void,则返回 null
- 如果此Class对象表示数组类,则返回表示Object类的Class对象
- getGenericSuperclass
- 返回直接超类,带泛型信息
- getPackage
- getPackageName
- getInterfaces
- 返回直接实现的接口
- getGenericInterfaces
- 返回直接实现的接口,带泛型信息
- getComponentType
- 返回数组的元素类型
- getModifiers
- 返回此类或接口的 Java 语言修饰符,以整数编码
- 修饰符由 Java 虚拟机的public 、 protected 、 private 、 final 、 static 、 abstract和interface常量组成
它们应该使用类Modifier的方法进行解码
- getSigners
- 返回签名者数组
Enclosing
- getEnclosingMethod
- 如果此Class对象表示方法中的局部或匿名类,则返回表示基础类的直接封闭方法的Method对象
- 配合局部类使用
- isLocalClass
- getEnclosingConstructor
- getEnclosingClass
Declaring
- getDeclaringClass
- 如果此Class对象表示的类或接口是另一个类的成员,则返回表示声明它的类的Class对象
- 例如内部类
Calendar.Builder
返回Calendar
- isMemberClass
类内容
-
getClasses
- 获取一个类中定义的所有 public 类
- 例如
Calendar
返回内部类Calendar.Builder
-
getFields
- 返回所有 public 字段
-
getMethods
- 返回所有 public 方法,包括从父类继承的
-
getConstructors
- 返回所有 public 构造器
-
getField
- 根据名称获取 public 字段
-
getMethod
-
getConstructor
-
getDeclaredClasses
- 获取一个类中定义的所有类,不包括继承和实现的类
-
getDeclaredFields
- 返回此类声明的所有字段,包括私有的,不包括继承的
-
getDeclaredMethods
-
getDeclaredConstructors
-
getDeclaredField
-
getDeclaredMethod
-
getDeclaredConstructor
-
getRecordComponents
- 返回记录组件
-
getPermittedSubclasses
- 返回密封直接子类
-
getEnumConstants
- 返回此枚举类的元素
-
getAnnotatedSuperclass
- 返回带注解信息的父类
-
getAnnotatedInterfaces
- 返回带注解信息的父接口
-
getNestHost
- 获取嵌套类的最外层类
-
isNestmateOf
- 判断入参类型是否和当前类型属于同一个嵌套组
-
getNestMembers
- 获取当前类嵌套组中的所有类
Resource
- getClassLoader
- 类加载器
- getResourceAsStream
- 查找具有给定名称的资源,返回字节流
- getResource
- 查找具有给定名称的资源,返回 URL
转换
- cast
- 转换入参对象的类型
- asSubclass
- 转换到入参类型
其他
- getProtectionDomain
- 获取类的保护域信息
- desiredAssertionStatus
- 获取当前类是否开启了断言
- 20230525 Class java lang20230525 class java lang 20230525 java enum lang class java lang elementtype annotation 20230525 java retentionpolicy annotation 20230525 java annotatedelement 20230525 reflect java annotation annotationformaterror java lang java lang numberformatexception getsystenantnames java lang module classformaterror nullpointerexception jfinal java lang