反射的定义:将类的各个组成部分封装为其他对象,这就是反射机制
好处:
1、在程序运行过程中,操作这些对象
2、可以解耦 提高程序的可扩展性
在上图中,我们可以看到java代码在计算机中经历的三个阶段 从左到右分别是 source源代码阶段、class类对象阶段和Runtime运行阶段
第一个阶段 source源代码阶段 这时候代码没进内存还在硬盘上
1、写一个类文件 person.java
private string name;
Private int age;// 成员变量 用来拿到值和设置值
Public person(){} //构造方法 创建对象
Public void1eat(){}//成员方法 运行和执行
通过java里面自带的编译器 javac编译java文件
编译没有错误通过时,在硬盘里生成一个字节码文件 person.class
字节码里面放的是什么:
重要的三部分:1、成员变量 2、构造方法、成员方法 这些,还有类的名称等
他们都在硬盘上存储
第二个阶段:class类对象阶段
字节码加载进入内存:类加载器 ClassLoader
通过ClassLoader这个类加载器可以将person.class加载到内存中去 把三部分封装为三个不同的对象
通过类对象的行为可以创建person对象
获取class对象的方式
1、class.forName("全类名"):将字节码文件加载进内存,返回class对象
2、类名.class:通过类名的属性class获取
3、对象.getclass():getclass()方法在object类中定义着