我们可以把每一个类(例如Student类)抽象地理解为一个对象,这些对象所属于的类为Class类
Class类的特点:
- 该类在java.lang包中,直接使用无需引包
- Class类由final修饰,不可被继承
- Class类构造方法由private修饰,只能在本类中使用,所以Class类对象不能通过new关键字创建
- Class类实现了Serializable接口
我们可以通过以下六种方式获取到Class类的实例化对象
这里先创建一个Student类,用作试验对象
public class Student{
}
public class Test{
public static void main(String[] args){
//这里Class类的对象名用clazz是因为class是关键字,不能用作标识符,由于这里是局部变量,需要有初始值,所以给其赋值为null;
Class clazz = null;
//1、通过forName方法,传入值为包名+类名,该方法需要捕获异常
try {
clazz=Class.forName("venus.Student");
System.out.println(clazz.getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//2、通过 类名.class
clazz = Student.class;
System.out.println(clazz);
//3、通过 对象.getClass();
clazz = new Student().getClass();
System.out.println(clazz);
//4、获取数组对象:元素类型[].class
clazz = String[].class;
System.out.println();
//5、获取基本数据类型对应的class对象:基本数据类型包装类.TYPE
clazz = Integer.TYPE;
System.out.println(clazz);
//6、获取某个类父类所对应的class对象
clazz = Student.class.getSuperClass();//或者
clazz = new Student().getClass().getSuperClass();//或者
try{
clazz = Class.forName("venus.Student").getSuperClass();//需要捕获异常
}catch(ClassNotFoundException e){
e.printStackTrace();
}
System.out.println(clazz);
}
}
我们运行一下,看一下控制台的输出: