获取Class类对象
文章目录
一、反射的概念
二、Class类及其特点
三、如何获取Class对象
一、反射的概念:反射是一种新的操作类中成员变量、构造方法、普通方法的机制,如下所示:
public class Test {
public static void main(String[] args) {
//通过new,创建一个对象的方式去操作
Student student = new Student();
student.name = "Tom";
student.doHomework();
try {
Class clazz = Class.forName("venus.Student");
//得到Student类中的构造方法
Constructor constructor = clazz.getConstructor();
System.out.println(constructor.getName());
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果:
二、Class类及其特点
Class类的概念:是Java反射机制的入口,可以说是类的类,能够通过创建Class对象的方式,封装我们所需要的类的信息,如成员变量、构造方法、普通方法,可以通过这个Class对象去操作对应的类
Class类的特点
1、在java.lang包下,因此使用不需要引包
2、被final关键字修饰,不能被继承,因此没有子类
3、继承了Serializable接口
4、构造方法被private修饰,不能通过new关键字创建构造方法
三、如何获取Class对象
public class Test {
public static void main(String[] args) {
try {
//Class.forName(类包名.类名);
Class clazz = Class.forName("venus.Student");
//2、类名.class
clazz = Student.class;//通过类名获取
System.out.println(clazz.getName());
//3、对象.getClass()
clazz = new Student().getClass();//通过
System.out.println(clazz.getName());
//4、得到基本数据类型对应的class类:基本数据类型包装类.TYPE;如果要获得包装类的class,则是基本数据类型包装类.class
clazz = Integer.TYPE;
System.out.println(clazz.getName());
clazz = Integer.class;
System.out.println(clazz.getName());
//5、得到数组对应的Class类:元素类别[].class
clazz = String[].class;
System.out.println(clazz.getName());
//6、得到某个类的父类的Class对象:
//首先得到该类对应的Class对象,如下Student.class,然后调用getSuperclass()方法,则可得到该类父类对应的Class对象,即:子类Class对象.getSuperclass()
clazz = Student.class.getSuperclass();
System.out.println(clazz.getName());
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果