| |
|
开发:
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知识库]反射的简单知识 |
? ? ? ? 由于博主只是学了反射的一点皮毛,所以只能浅谈一下反射的相关知识。 目录 ????????????????Class类中用于获取构造方法的方法: ????????????????Constructor类中用于创建对象的方法: ????????????????Class类中用于获取成员变量的方法: ????????????????Field类中用于给成员变量赋值的方法: ????????????????Class类中用于获取成员方法的方法: ????????????????Method类中用于调用成员方法的方法: 类加载器? ? ? ? 类加载? ? ? ? ? ? ? ? 概述: ????????????????????????当程序要用某个类时,如果该类还未被加载到内存中,则系统会通过类的加载,类的连接,类的初始化这三个步骤来对类进行初始化。如果不出现意外情况,JVM将会连续完成这三个步骤,所以有时也把这三个步骤统称为类加载或类初始化。 ? ? ? ? ? ? ? ? 类的加载:? ? ? ? ? ? ? ? ? ? ? ? 概述: ????????????????????????????????·就是指将class文件读入内存,并为之创建一个java.lang.Class对象。 ????????????????类的连接:????????????????? ? ? ??概述: ????????????????????????????????·验证阶段:用于检验被加载的类是否有正确的内部结构,并和其他类协调一致。 ????????????????类的初始化:? ? ? ? ? ? ? ? ? ? ? ? 概述: ????????????????????????????????·在该阶段,主要就是对类变量进行初始化。 ? ? ? ? ? ? ? ? ? ? ? ? 步骤: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1)假如类还未被加载和连接,则程序先加载并连接该类。 ? ? ? ? ? ? ? ? ? ? ? ? 时机: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1)创建类的实例 ? ? ? ? 类加载器? ? ? ? ? ? ? ? 作用:????????????????????????·负责将.class文件加载到内存中,并为之生成对应的java.lang.Class对象。 ? ? ? ? ? ? ? ? JVM的类加载机制:????????????????????????(1)全盘负责:就是当一个类加载器负责加载某个Class时,该Class所依赖的和引用的其他Class也将由该类加载器负责载入,除非显示使用另外一个类加载器来载入。 ? ? ? ? ? ? ? ? ClassLoader:? ? ? ? ? ? ? ? ? ? ? ? 概述: ????????????????????????????????是负责加载类的对象 ? ? ? ? ? ? ? ? ? ? ? ? 分类: ????????????????????????????????(1)Bootstrap class loader:它是虚拟机的内置类加载器,通常表示为null,并且没有父null。 ? ? ? ? ? ? ? ? ? ? ? ? 方法: ????????????????????????????????(1)static ClassLoader getSystemClassLoader():返回用于委派的系统类加载器。 反射? ? ? ? 概述:????????????????Java反射机制是指在运行时获取一个类的变量和方法信息。然后通过获取到的信息来创建对象,调用方法的一种机制。由于这种动态性,可以极大的增强程序的灵活性,程序不用在编译期就完成确定,在运行期仍然可以扩展。 ? ? ? ? 获取Class对象:????????????????我们要想通过反射去使用一个类,首先我们要获取到该类的字节码文件对象,也就是类型为Class类型的对象这里我们提供三种方式获取Class类型的对象 ? ? ? ? ? ? ? ? 最常用第三种 ????????反射获取构造方法并使用????????????????Class类中用于获取构造方法的方法:????????????????????????·Constructor<?>[] getConstructors():返回所有公共构造方法对象的数组。 ????????????????Constructor类中用于创建对象的方法:????????????????????????·T newInstance(Object...initargs):根据指定的构造方法创建对象。 ? ? ? ? ? ? ? ? 注意事项:????????????????????????·基本数据类型也可以通过.class得到对应的Class类型。 ????????反射获取成员变量并使用????????????????Class类中用于获取成员变量的方法:????????????????????????·Field[] getFields():返回所有公共成员变量对象的数组。 ????????????????Field类中用于给成员变量赋值的方法:????????????????????????·void set(Object obj, Object value):给obj对象的成员变量赋值为value。 ????????反射获取成员方法并使用????????????????Class类中用于获取成员方法的方法:????????????????????????·Method[] getMethods():返回所有公共成员方法对象的数组,包括继承的。 ????????????????Method类中用于调用成员方法的方法:????????????????????????·Object invoke(Object obj, Object...args):调用obj对象的成员方法,参数时args,返回值是Object类型。 模块化? ? ? ? 概述:???????????????? ????????????????Java语言随着这些年的发展已经成为了一门影响深远的编程语言,无数平台,系统都采用Java语言编写。但是,伴随着发展,Java也越来越庞大,逐渐发展成为一门“臃肿”的语言。而且,无论是运行一个大型的软件系统,还是运行一个小程序,即使程序只需要使用Java的部分核心功能,JVM也要加载整个JRE环境。为了给Java“瘦身”,让Java实现轻量化,Java 9正式的推出了模块化系统。Java被拆分为N多个模块,并允许Java程序可以根据需要选择加载程序必须的Java模块,这样就可以让Java以轻量化的方式来运行。 ????????????????其实,Java 7的时候已经提出了模块化的概念,但由于其过于复杂,Java 7,Java 8都一直未能真正推出,知道Java 9才真正成熟起来。对于Java语言来说,模块化系统是一次真正的自我革新,这种革新使得“古老而庞大”的Java语言重新焕发年轻的活力。 ? ? ? ? 模块的基本使用? ? ? ? ? ? ? ? 基本步骤:????????????????????????(1)创建模块(按照以前的讲解方式创建模块,创建包,创建类,定义方法) ????????模块服务的使用? ? ? ? ? ? ? ? 基本步骤:????????????????????????(1)在myOne模块下创建一个包com.itheima_03,在该包下提供一个接口,接口中定义一个抽象方法 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/23 9:43:15- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |