一、Class类初认识

本文详细介绍了Java中的Class类,包括其基础概念和重要作用,如表示运行时的类和接口信息。此外,文章列举并解释了Class类的一系列公共方法,如forName()、newInstance()、isInstance()等,这些方法在实际开发中有着广泛应用,对于理解和使用Java反射机制至关重要。
摘要由CSDN通过智能技术生成

一、Class类的基础介绍

  1. Class类的实例表示正在运行的 Java 应用程序中的类和接口.
  2. Enum枚举是一种类,annotation 注解是一种接口.
  3. 每个数组还属于一个类,该对象由具有相同元素类型和维数的所有数组共享。
  4. 原始 Java 类型(布尔型、字节型、字符型、短整型、整型、长整型、浮点型和双精度型)和关键字 void 也表示为类对象。
  5. 类没有公共构造函数。相反,类对象由 Java 虚拟机在装入类时自动构造,并在类装入器中调用 defineClass 方法.

二、Class类的公共方法介绍

方法方法说明方法参数说明JDK版本
forName (String className)通过全路径类名称创建类对象全路径类名称1.0
forName(String name, boolean initialize, ClassLoader loader)通过全路径类名称创建类对象name(全路径类名称),initialize(是否初始化),loader(指定类加载器)1.2
newInstance()创建无参构造函数实例1.0
isInstance(Object obj)确定指定的对象是否与此类所表示的对象赋值兼容待检查对象1.1
isInterface()确定指定的 Class 对象是否表示接口类型1.0
isArray()确定指定的 Class 对象是否表示数组类型1.0
isPrimitive()确定指定的 Class 对象是否表示基元类型(基本数据类型加Void)1.0
isAnnotation()确定制定接口class对象是否表示注解类型1.5
isSynthetic()确定制定接口class对象是否表示合成类类型1.5
getName()获取类名称1.0
getClassLoader()获取类加载器1.0
getTypeParameters()返回 TypeVariable 对象的数组,这些对象按声明顺序表示由此泛型声明对象所表示的泛型声明所声明的类型变量。如果基础泛型声明未声明任何类型变量,则返回长度为 0 的数组1.5
getSuperclass()获取此类对象的超类1.0
getGenericSuperclass()获取此类实体的直接超类1.5
getPackage()获取类的包路径1.0
getInterfaces()获取此类对象所实现的所有接口类1.0
getGenericInterfaces()返回表示由此对象表示的类或接口直接实现的接口的类型1.5
getComponentType返回表示数组的组件类型的类。如果此类不表示数组类,则此方法返回 null1.1
getModifiers()返回此类或接口的 Java 语言修饰符,以整数编码。修饰符由Java虚拟机的常量组成,用于公共,受保护,私有,最终,静态,抽象和接口;它们应该使用类修饰符的方法进行解码1.1
getDeclaringClass()获取此类对象被那些类对象声明为成员的集合,如果没有被声明过返回null1.1
getSimpleName()返回源代码中给定的基础类的简单名称。如果基础类是匿名的,则返回空字符串1.5
isAnonymousClass()确定制定接口class对象是否表示匿名类类型1.5
isLocalClass()确定制定接口class对象是否表示本地类类型
isMemberClass()确定制定接口class对象是否表示成员类类型1.5
getClasses()返回一个数组,该数组包含 Class 对象,这些对象表示作为 Class 对象所表示的类的成员的所有公共类和接口。这包括从超类继承的公共类和接口成员以及该类声明的公共类和接口成员。如果 Class 对象没有公共成员类或接口,则此方法返回长度为 0 的数组。如果 Class 对象表示基元类型、数组类或 void,则此方法还返回长度为 0 的数组1.1
getFields()返回一个数组,其中包含 Field 对象,该对象反映由 Class 对象表示的类或接口的所有可访问的公共字段1.1
getMethods()返回一个数组,该数组包含 Method 对象,这些对象反映由 Class 对象表示的类或接口的所有公共方法,包括由类或接口声明的那些方法以及从超类和超接口继承的方法1.1
getConstructors()表示此类的公共构造函数的构造函数对象的数组1.1
getField(String name)通过属性字符串名称获取公共属性Field属性字符串名称1.1
getMethod(String name, Class<?>… parameterTypes)通过方法名称和指定参数类型集合获取对应公共方法Methodname(方法名称), parameterTypes(指定参数类型类集合)1.1
getConstructor(Class<?>… parameterTypes)通过指定参数类型集合获取对应有参构造函数parameterTypes(指定参数类型类集合)1.1
getDeclaredClasses()返回一个数组,该数组包含 Class 对象,这些对象表示作为 Class 对象所表示的类的成员的所有公共、私有、受保护、默认的类和接口。这包括从超类继承的公共类和接口成员以及该类声明的公共类和接口成员。如果 Class 对象没有公共成员类或接口,则此方法返回长度为 0 的数组。如果 Class 对象表示基元类型、数组类或 void,则此方法还返回长度为 0 的数组1.1
getFields()返回一个数组,其中包含 Field 对象,该对象反映由 Class 对象表示的类或接口的所有可访问的公共、私有、受保护、默认的字段1.1
getDeclaredMethods()返回一个数组,该数组包含 Method 对象,这些对象反映由 Class 对象表示的类或接口的所有公共、私有、受保护、默认的方法,包括由类或接口声明的那些方法以及从超类和超接口继承的方法1.1
getDeclaredConstructors()表示此类的公共、私有、受保护、默认的构造函数的构造函数对象的数组1.1
getDeclaredField(String name)通过属性字符串名称获取公共、私有、受保护、默认的属性Field属性字符串名称1.1
getDeclaredMethod(String name, Class<?>… parameterTypes)通过方法名称和指定参数类型集合获取对应公共、私有、受保护、默认的方法Methodname(方法名称), parameterTypes(指定参数类型类集合)1.1
getDeclaredConstructor(Class<?>… parameterTypes)通过指定参数类型集合获取对应有公共、私有、受保护、默认的参构造函数parameterTypes(指定参数类型类集合)1.1
getResourceAsStream(String name)对指定的全路径名称进行加载为Inutstream全路径名称字符串1.1
isEnum()确定指定的 Class 对象是否表示枚举类型1.5
getEnumConstants()返回此枚举类的元素集合1.5
cast(Object obj)将对象强制转换为由此类对象表示的类或接口要转换的对象
asSubclass(Class clazz)将类强制转换为由此类的子类1.5
getAnnotation(Class annotationClass)通过注解类获取公共注解类型annotationClass注解类1.5
isAnnotationPresent(Class<? extends Annotation> annotationClass)确定当前类是否声明对应注解类annotationClass需要获取的注解类1.5
getDeclaredAnnotations()获取类上声明所有的公共、私有、受保护、默认的注解集合1.5
getDeclaredAnnotation(Class annotationClass)通过注解类获取类上声明所有的公共、私有、受保护、默认的注解annotationClass需要获取的注解类1.8
getAnnotations()获取类上声明所有的公共的注解集合1.5
getAnnotation(Class annotationClass)通过注解类获取类上声明所有的公共的注解annotationClass需要获取的注解类1.5

所有的方法都已经广泛应用于各个框架,熟练使用并了解方法用途对于查看框架API有很好的理解作用,目前第一篇关于Class的文章就到这里(以上内容来源自JDK1.8Class源码解读).

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值