获取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