Minecraft(我的世界)中文论坛
标题:
[Bukkit][未知之域] JAVA机制-反射 简介篇
作者:
qianji20000420
时间:
2017-8-5 10:41
标题:
[Bukkit][未知之域] JAVA机制-反射 简介篇
本帖最后由 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]
作者:
庄拾弎
时间:
2020-9-3 08:24
提示:
作者被禁止或删除 内容自动屏蔽