反射①:如何获取class对象六种方法

时间:2022-04-19 15:50:16

获取class对象的六种方法

了解:class类——是Java反射机制的入口,封装了一个类或接口的运行信息,通过调用Class类的方法可以获取这些信息,其特点如下:

1、该类在java.lang包中;

2、该类被final所修饰,即该类不可以被子类继承

3、该类实现了Serializable接口

4、该类的构造方法被private所修饰,所以不能通过new关键字创建该类的对象

①先创建一个类

//创建一个Student类
package com.zzj.vo; public class Student { public String name; public Student(){ } public Student(String name){
this.name = name;
} public void doHomework(){
System.out.println(name+"正在写作业...");
} }

②测试获取对象

第一种:Class.forName方法获取

Class clazz = null;
try {
clazz = Class.forName("com.zzj.vo.Student");
System.out.println(clazz.getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//输出结果为com.zzj.vo.Student

第二种:类名.class方法获取

clazz = Student.class;
System.out.println(clazz.getName());
//输出结果为com.zzj.vo.Student

第三种:对象.getClass()

clazz = new Student().getClass();
System.out.println(clazz.getName());
//输出结果为com.zzj.vo.Student

第四种:基本数据类型对应的class对象:包装类、TYPE

clazz = Integer.TYPE;
System.out.println(clazz.getName());//输出int
clazz = Integer.class;
System.out.println(clazz.getName());//输出java.lang.Integer

第五种:数组类型对应的class:元素类型[].class

clazz = String[].class;
System.out.println(clazz.getName());
//输出结果为[Ljava.lang.String;

第六种:某个类父类所对应的的class对象

clazz = Student.class.getSuperclass();
System.out.println(clazz.getName());
//输出结果为java.lang.Object