Java反射探索(一): 概念上的理解

学习 反射时, 老师要求我们要 “沐浴更衣”, “三天吃素”, 因为 它很神圣。

反射技术是 Java 语言的灵魂。可惜当时经验不足, 没有抓住机会和老师探讨探讨。

由于反射技术的大部分方法都是由 .dll 文件实现, 只能调用其提供的 API 接口, 接口练习的代码, 下文贴出。

 

练习使用反射技术时, 感觉它像 Java 给 开的 “后门”。 

通过它, 可以对对象做所有代码层面可以做的事情。

运用时体会到 设计者 强大的 脑回路, 和平时开发过程中完全不同的思维;

 

核心部件: 类模板(Class 对象)。

程序员书写的每一个类都有唯一的一个类模板, 里面包含了该类的所有信息。 包括: 类的声明信息, 属性, 行为, 父类等等;

且提供的对应的 API 获取描述信息(手册)。

 

通过获取到的信息, 可以直接通过类模板进行生成对象,调用, 赋值等等;

查找属性和方法的主要方式: 属性名/方法名;

即: 拿到了属性名和方法名的字符串, 就可以通过类模板操作这些属性和方法(受访问控制权限的影响, private, public 等等);

这也就是为什么, SpringMVC, Mybatis, Json转换等框架如此依赖于 get set 方法, 依赖 属性名,方法名的对应和正确性的原因, 因为他们都是基于 反射 进行架构的。

 

测试期间, 让人惊讶的是思维的转换: 按照惯性思维, 一般是先找到对象, 然后根据对象修改相应的属性值; 反射则是通过模板先找到 类 中的属性对应的模块, 然后再针对对象, 对该模块的值进行操作。

 

早期一直好奇, 为什么 SpringMVC 可以做到 自动的将前端传送的 Json 对象转换封装为 对应的 Java 对象,很神奇! 今天才明白它也是运用的 反射进行对象的封装, 相同的属性名, 赋值对应的值。 对象克隆也可运用反射, 后文有代码示例。

 

总之: 明白一点点 反射的知识后, 之前很多疑问都迎刃而解了。 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值