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