Java中的Class类

Class类的作用

Class类是一个特殊类,它用于表示JVM运行时类或接口的信息。
Class类提供很多方法用于获取类的各种信息,比如获取类名、判断该类是否是一个接口还是普通类等等。
在Java中枚举类是一种类,而注解是一个接口,数组也是一个类;Java原始类型(boolean, byte, char, short, int, long, float, and double)和关键字void也被表示为Class的对象。

你知道吗?
在每一个基本类型的包装类中都有一个共有的静态变量,例如Integer:
public static final Class TYPE = (Class) Class.getPrimitiveClass(“int”);
TYPE就是这个基本类型的Class对象表示。

一个类只有被JVM加载后才能使用,需要经过加载-->验证-->准备-->解析-->初始化五个阶段。
当类被虚拟机加载后都会在内存中创建一个该类的Class对象,用于存储该类的各种信息。
Class类的构造函数被设计为私有的,这意味着我们不能通过new的方式来创建Class对象,只有JVM才能创建该类的实例。因为类的加载不是我们负责的,只有JVM才知道如何加载一个类。

Class类的父类

Class类是java中的一个类和其他非继承类一样,默认的父类也是Object。
可以使用下面的方式验证:

public class ClassParentTest {
   
	public static void main(String[] args) {
   
		boolean assignableFrom = Object.class.isAssignableFrom(Class.class);
		System.out.println(assignableFrom);
	}
}

Class#isAssignableFrom(Class<?> cls)方法用于判断cls的实例能否赋值给该Class的引用;换句话说,该方法可以用来判断cls类是否是该Class的子类或者如果Class是接口表示cls是否实现了该接口。
上边那段代码将输出true,说明Class类的父类是Object类。

Class类的forName方法

用于手动加载一个类,该方法是一个公共静态方法,有多个重载。
方法签名:

public static Class<?> forName(String className)
public static Class<?> forName(String name, boolean initialize,ClassLoader loader)
        throws ClassNotFoundException
//下面这个是JDK9新增加的,用于从模块中加载一个类,不对类进行初始化
public static Class<
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cloud-Future

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值