Class是类的类,因此Class类的对象为类;
Class类的特点:(结合截图理解)
- 该类在java.lang包中;
- 该类被final所修饰,即该类不可以被子类继承;
- 该类实现了Serializable接口;
- 该类的构造方法被private所修饰,即不能通过new关键字创建该类的对象;
该图是Class.class中Class类的源码。
进入主题,获取Class对象的六种方法:
先创建一个类,这里以Student类为例:
public class Student {
public String name;
public Student() {
}
public void doHomework() {
System.out.println(name+"正在做作业。。。。。。");
}
}
然后获取Student类所对应的Class对象以及一些其他类的Class对象:
public class Test {
public static void main(String[] args) {
Class clazz = null;
try {
//1、Class.forName()
clazz = Class.forName("venus.Student");
System.out.println("1-->"+clazz);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//2、类名.class
clazz = Student.class;
System.out.println("2-->"+clazz);
//3、对象.getClass()
clazz = new Student().getClass();
System.out.println("3-->"+clazz);
//4、基本数据类型对应的class对象:包装类.TYPE
clazz = Integer.TYPE;
System.out.println("4-->"+clazz);
clazz = Integer.class;
System.out.println("4-->"+clazz);
//5、数组对应的class对象:元素类型[].class
clazz = String[].class;
System.out.println("5-->"+clazz);
//6、某个类的父类所对应的class对象:类名.class.getSuperclass()
clazz = Student.class.getSuperclass();
System.out.println("6-->"+clazz);
}
}
结果如下:
注意:a)1、2、3 三种方法都是获取普通类的获取方法,获取结果相同,仅形式不同;b)获取基本数据类型对应的class对象时:包装类.TYPE 是获取基本数据类型对应的class对象;而 包装类.class 则是获取基本数据类型对应的包装类对应的class对象,一定要注意区别。