前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java反射札记

Java反射札记

作者头像
企鹅号小编
发布2018-02-05 10:29:37
4670
发布2018-02-05 10:29:37
举报
文章被收录于专栏:编程编程

Java反射相关内容,在阅读一些开源框架和自己动手封装逻辑时常要用到,以前陆陆续续地看到过一些文章,但是最终留下的是破碎的代码片段和类名,所以这次重新敲一遍反射的代码,作如下记录。

上游知识

类加载流程图:

注:图片来自https://www.cnblogs.com/snake-hand/p/3151381.html

Java内存模型如下:

注:图片来自KevinJaz(https://www.zhihu.com/question/24304289)

在代码编译后,会生成JVM(Java虚拟机)能够识别的二进制字节流文件(*.class)。之后JVM把Class文件中的类描述数据从文件加载到内存,并对数据进行校验、转换解析、初始化,使这些数据最终成为可以被JVM直接使用的Java类型。

使用场景举例

我们在写java代码时,对象的引用,类的结构、方法和属性等信息都要求编译时是确切的。有时候我们无法在编译期确认这些信息,比如有两个人同时开发,第一个人写的类需要调用第二个人写的类里的方法,不巧第二个人还没写好,这时候第一个人就没法调用了。但是第一个人知道调用的方法名和参数,这些能确定,那么这时候就可以用反射。

把代码结构的确定性从编译期延迟到运行时,性能受到损害,换来了灵活性的提高。

代码实现

反射实例

反射属性

反射方法

改变数组

文末

本文来自企鹅号 - CodeThings媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - CodeThings媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像识别
腾讯云图像识别基于深度学习等人工智能技术,提供车辆,物体及场景等检测和识别服务, 已上线产品子功能包含车辆识别,商品识别,宠物识别,文件封识别等,更多功能接口敬请期待。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档