获取Class对象的六种方法

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对象,一定要注意区别。

发布了99 篇原创文章 · 获赞 3 · 访问量 1232

猜你喜欢

转载自blog.csdn.net/qq_44971038/article/details/103870383