| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Java——反射 -> 正文阅读 |
|
[Java知识库]Java——反射 |
1.类加载器1.1 类加载1.1.1 对类加载的描述当程序要使用某个类时,如果该类还未被加载到内存中,系统将会通过类的加载、类的连接和类的初始化这三个步骤来对类进行初始化;不出现意外情况,JVM将会连续完成这三个步骤,所以有时也把这三个步骤统称为类加载或者类初始化。 1.1.2 类的加载、类的连接和类的初始化类的加载: 将class文件读入内存,并为之创建一个 java.lang.Class 对象。 类的连接: 其分为三个阶段,分别是验证阶段、准备阶段和解析阶段。 类的初始化: 对类变量进行初始化。 1.2 何为类加载器?1.2.1 类加载器的作用负责将class文件加载到内存中,并为之生成对应的java.lang.class对象。 1.2.2 JVM的加载机制(1) 全盘负责。 当一个类的加载器负责加载某个Class时,该class所依赖的和引用的其他Class也将由类加载器负责载入,除非显式使用另外一个类加载器来载入。 (2) 父类委托。 当一个类加载器负责加载某个Class时,先让父类加载器试图加载该Class,只有父类加载器无法加载该类时才尝试从自己的类路径中加载该类。 (3) 缓冲机制。 保证所有加载过的Class都会被缓存,当程序需要使用某个Class对象时,类加载器先从缓冲区中搜索该Class,只有当该缓冲区中不存在该Class对象时,系统才会读取该类对应的二进制数据,并将其转换成Class对象,储存到缓冲区。 1.2.3 Java中的内置加载器
1.2.4 ClassLoaderClassLoader是负责加载的对象。 其两个方法:
?示例代码:
2.何为反射?2.1 概述反射在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。 2.2 反射优缺点2.2.1 优点可以动态执行,在运行期间根据业务功能动态执行方法、访问属性,最大限度发挥了java的灵活性。 2.2.2 缺点对性能有影响,这类操作总是慢于直接执行java代码。 2.3 补充 2.3.1 反射机制什么是动态语言和静态语言?
而Java可以称为“准动态语言”,因为其可以用反射机制、字节码操作获取类似动态语言的特性。? 正常的创建方式: 引入要用的包类的名称→new实例化→取得实例化对象 而反射则是: 通过实例化对象→调用getClass方法→得到完整的包类名称 3.如何使用反射?3.1 反射获取构造方法3.1.1?Class类中用于获取构造方法的方法
3.1.2?Constructor类中用于创建对象的方法?
3.2?反射获取成员变量3.2.1?Class类中用于获取成员变量的方法
3.2.2?Field类中用于给成员变量赋值的方法
3.3?反射获取成员方法3.3.1?Class类中用于获取成员方法的方法
3.3.2?Method类中用于调用成员方法的方法
3.4?反射之越过泛型检查创建一个Integer类型的ArrayList集合,如何添加String类型的数据呢? 代码示例:
3.5?反射之运行配置文件指定内容/* /* /* /* 3.6?模块化3.6.1 概述Java程序可以根据需要选择加载程序必须的Java模块。 3.6.2?模块的基本使用(1) 创建模块; (2)?在模块的src目录下新建一个名为moudle-info.java的描述性文件; (3)?模块导出格式:exports包名; (4)?requires模块名(按下Alt+Enter提示,然后选择模块依赖); (5)?在模块的类中选择需要依赖模块的内容。 3.6.3?模块服务的使用
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:48:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |