本帖最后由 qianji20000420 于 2017-8-5 21:59 编辑
- 反射的概述
- 反射的简单介绍
- 类的加载
- 类的初始化时机
- 类加载器
- 反射的使用时机
|
|
|
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。(来自度娘百科)
反射是为了提高程序的灵活性,让他去适应更多的情况,反射并不是非用不可,它的目的是为了让代码更加的灵活。 |
|
|
1、 当程序要使用某个类时,如果这个类并未加载到内存中,则系统会通过三个步骤-加载、连接、初始化,来完成对这个类的加载。 1、 将Class文件读入内存,随之建立一个Class字节码文件对象 1、 验证 是否有正确的内部结构,并且和其他类协调一致
2、 准备 负责为类的静态成员分配内存,并为其初始化默认值
3、 解析 将类的二进制数据中的符号引用替换为直接引用
1、 如果类存在直接父类的话,且直接父类还没有被初始化,则先初始化其直接父类
2、 如果类存在一个初始化方法,就执行此方法
|
|
|
- 创建类的实例
- 调用类的静态方法
- 使用类的非常量静态字段
- 使用反射方式强制创建某各类或接口对应的Class对象
- 初始化某个类的子类
- 直接使用java.exe命令来运行某个主类(main方法启动时)
|
|
|
类加载器是负责将class文件加载到内存中并随之创建一个Class对象
1.Bootstrab ClassLoader 根类加载器(引导类加载器) 负责对JAVA核心类的加载
2.Extension ClassLoader 扩展类加载器 负责JRE扩展目录中jar的加载
3.System ClassLoader 系统类加载器 一般是我们写的东西的加载 |
|
|
复制Part2的内容:
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。(来自度娘百科)
注意:反射只能用于正在运行的程序。
|
|
|
[groupid=1181]Unknown Domain[/groupid]