Class类是什么?
- 首先Class类来源于java.lang.Class
- Class 本身也是一个类,还是个泛型类,只不过名字奇特了一点
- 我们自己写的类,基本上是用来抽象某一个具体的事务,比如车,房子,人,动物.... 。可以通过new 来生成具体的对象,比如我的车,你的房子,我的房子,我的狗...
- 而Class类用于抽象这些类和接口。比如说类和接口一般都有名字,Class用getName()来获取类或接口的名字,都有方法,都有成员属性... Class 将这些抽象出来,形成类模板。
- 当jvm加载一个一个class文件时,就会创建出一个对象的Class实例,操作这个实例就能获取到对应类的信息
如何获取到Class对象
-
Dog dog = new Dog();
dog.getClass();
根据类的对象获取class实例 -
Class.forName("ClassName")
根据类的全名,获取对应的class实例 -
Class dogClass = Dog.class
根据类名.class 获取对应的class实例
Class类的常用方法
-
getName()
一个Class对象描述了一个特定类的属性,Class类中最常用的方法getName以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。 -
newInstance()
Class还有一个有用的方法可以为类创建一个实例,这个方法叫做newInstance()。例如:
x.getClass.newInstance()
,创建了一个同x一样类型的新实例。newInstance()方法调用默认构造器(无参数构造器)初始化新建对象。 -
getClassLoader()
返回该类的类加载器。 -
getComponentType()
返回表示数组组件类型的 Class。 -
getSuperclass()
返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的超类的 Class。 -
isArray()
判定此 Class 对象是否表示一个数组类。