Java 反射的源头Class类

版权声明:尊重原创,码字不易,转载需博主同意。 https://blog.csdn.net/qq_34626097/article/details/84944452

1. Class类

在Object类中定义了以下的方法,此方法将被所有子类继承:

public final Class getClass()//这是一个泛型方法

以上的方法返回值的类型是一个Class类,此类是Java反射的源头,实际上所谓反射从程序的运行结果来看也很好理解,即:可以通过对象反射求出类的名称。

获取对象的包名

  1. 对照镜子后可以得到的信息:某个类的属性、方法和构造器、某个类到底实现了哪些接口。对于每个类而言,JRE 都为其保留一个不变的 Class 类型的对象。一个 Class 对象包含了特定某个类的有关信息。
  2. Class本身也是一个类
  3. Class 对象只能由系统建立对象
  4. 一个类在 JVM 中只会有一个Class实例
  5. 一个Class对象对应的是一个加载到JVM中的一个.class文件
  6. 每个类的实例都会记得自己是由哪个 Class 实例所生成
  7. 通过Class可以完整地得到一个类中的完整结构(这个类所有构成成分)

2.Class类常用方法

常用方法

3. 反射Class的理解

3.1. java.lang.Class:是反射的源头

  1. 我们创建了一个类,通过编译(javac.exe),生成对应的.class文件,我们创建了一个类,通过编译(java.exe),生成对应的.class文件,此.class文件加载到内存以后,就是一个运行时类,存在在缓存区。

3.2.反射的理解

  1. Class类就是相当于镜子一样,在我们正常的构建类的过程中,我们通常都是会先编写类的成员变量、方法、构造器等,然后在去new,使用其对象完成一些这个类具有的功能。 而因为有Class这一面镜子,我可以得到个运行时类的时候,去往回找到构成这个类的所有东西,如成员方法、变量等。

4.Dome

	//java.lang.Class:是反射的源头
	//每一个运行时类只加载一次!
	@Test
	public void test3() {
		Person p = new Person();
		//通过运行时类的对象,调用其getClass(),返回其运行时类
		//如:通过小孩可以知道父母是谁
		Class clazz = p.getClass();
		System.out.println(clazz);//class testReact.Person
	}

猜你喜欢

转载自blog.csdn.net/qq_34626097/article/details/84944452