Class类 获取Class对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Class类 获取Class对象相关的知识,希望对你有一定的参考价值。

 

阅读API的Class类得知,Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的

获取Class对象的三种方式(实例采用Person类)

 

方式1:通过Object类的getObject()方法   

 

Person p = new Person();
Class c = p.getClass();

 

方式2: 通过 类名.class 获取到字节码文件对象(任意数据类型都具备一个class静态属性,看上去要比第一种方式简单)。

 

Class c2 = Person.class;

  

方式3: 通过Class类中的方法(将类名作为字符串传递给Class类中的静态方法forName即可)。

   

Class c3 = Class.forName("Person");

  

 

l 注意:第三种和前两种的区别

前两种你必须明确Person类型.

后面是指定这种类型的字符串就行.这种扩展更强.我不需要知道类名.我只提供字符串,按照配置文件加载就可以了

 

代码演示:

public class ReflectDemo {
	public static void main(String[] args) throws ClassNotFoundException {
		//通过Object类的getObject()方法   
		Person p = new Person();
		Class c1 = p.getClass();
		System.out.println(c1);
		
		//类名.class 获取到字节码文件对象
		Class c2 =Person.class;
		System.out.println(c2);
		
		//通过Class类中的方法forName()
		Class c3 = Class.forName("cn.shiqi.demo1.Person");
		System.out.println(c3);
	}
}

  

class Person{

}

  

                            

以上是关于Class类 获取Class对象的主要内容,如果未能解决你的问题,请参考以下文章

Class对象的获取

步步UP2️⃣——反射的获取字节码Class对象和Class对象功能概述

JAVA 类名.class是啥意思?

反射——获取Class类对象

class , field , method

反射与类加载之反射基本概念与Class