# zb_java00809 **Repository Path**: climpeaker/zb_java00809 ## Basic Information - **Project Name**: zb_java00809 - **Description**: 反射 - **Primary Language**: Java - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2018-08-09 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # zb_java00809 # 课堂笔记 *反射* ## 1 反射的概念 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法等构成内容; 对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的类信息以及动态调用对象的方法的功能称为java语言的反射机制。 解析: (1)反射机制是一种动态的机制; (2)能够从解剖的视角获取类的内部构成信息; (3)可以动态的从外部调用一个实例对象的行为方法; ## 2 反射工具类Class类 * 1 Class类 Class类是一个工具类,类似于Math、String、Date等工具类; Class类主要用于发射操作; Class类是对类的抽象封装;Class类是抽象封装类的类,是对类描述的类; 重点掌握Class类的常用的方法;【P118】 【反射构成体系】 Class描述类的类; Field描述属性的类; Method描述方法的类; Constructor描述构造方法的类; Package描述包的类; Type描述类型的类; 代码[com.yuw.reflection.classdemo.TestDriver] * 2 反射编程 反射编程就是使用Class类中的方法操作被描述的类; 每一个读入内存的类,jvm都会创建一个与之对应的Class类,来描述该类的构成; 通过Class类可以获取到被描述类的所有的内部构成信息; 一个类只有唯一的一个Class与之对应,无论这个类有多少个实例对象; 也就是说如果都是同一个类的实例对象,无论从哪个实例对象获取的Class类都是同一个; Class类的实例对象是单例模式,只要是同一个类的,无论采用哪种途径获取都是一样的; 【参考文章:https://blog.csdn.net/sinat_38259539/article/details/71799078】 * 2.1 获取一个类或实例对象的Class实例 (1)通过class静态属性,例如:类名.class获取 (2)通过被描述类的实例对象的getClass方法获取 (3)使用Class类提供的静态方法forName获取【注意使用的参数是包路径名】 * 2.2 使用反射获取一个类的实例对象 (1)通过获取该类的Class实例获取一个类的实例对象 只能使用默认的构造方法创建实例对象,不能传递参数 (2)通过调用该类的构造方法对象获取一个类的实例对象 可以调用任何构造方法创建实例对象,可以传递参数 代码[com.yuw.reflection.classdemo.TestDriver.test05] 【扩展:当前学过的获取一个类的实例对象有三种途径:】 (1)new (2)对象流 (3)反射 * 2.3 使用反射机制获取被描述类的构成信息 (1)获取属性信息 (2)获取方法信息 (3)获取构造方法信息 (4)invoke反射调用 代码[com.yuw.reflection.classdemo.TestDriver]: 类中的方法test03-test05; #### 参与贡献 1. Fork 本项目 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [http://git.mydoc.io/](http://git.mydoc.io/) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)