反射的概述

反射概述

类加载器(ClassLoader)

负责将类的字节码文件加载到内存中,并生成对应的Class对象

Class 对象

java.lang.Class类的对象,也叫字节码文件对象,每个Class对象对应一个字节码文件

类加载时机

1.创建类的实例
Student stu= new Student();

  

当程序创建了一次该类的对象时,再次创建该类的对象时,类的加载器不会再次将字节码文件加载到内存当中

2.访问类的静态成员
Calendar.getInstance*();

  

3.初始化类的子类
class User extends Person(){}
User user = new User();  //先加载父类

  

4.反射方式创建的Class对象
Class clazz =Class.forName("类的正名");

  

正名:包名+类名,例如:cn.qq.demo.Student

获取Class对象的三种方式

Object类的getClass()方法
Class clazz =对象名.getClass();

  

类的静态属性
Class clazz =类名.class;

  

Class类的静态方法
Class clazz =Class.forName("类的正名");

  

正名:包名+类名,例如:cn.qq.demo.Student

三种获取Class对象的例子:

Student.java

 

cn.qq.demo.Student
​
public class Student{
    
}

  

Demo.java

cn.qq.demo.Demo


public class Demo{
    public static void main(String[] args) throws ClassNotFoundException{
        //方式一
        Student stu = new Student();
        Class clazz1 = stu.getClass();
        
        //方式二
        Class clazz2 = Student.class;
        
        //方式三
        Class clazz3 = Class.forName("cn.qq.demo.Student");
    }
}

  

 
注意:一个源文件对应一个字节码文件对象

 

posted @ 2021-01-19 02:14  新晋小白白  阅读(30)  评论(0编辑  收藏  举报