java反射浅谈

      作为一个测试,最近想写写关于开发的一些东西,不是因为要装逼,而是给自己经常总结总结,看看自己还有什么不足和自认为懂了但没有懂得东西,关于开发,IT这行的经常提到反射、JVM、多线程、注解、Spring,就来一个个慢慢掰开了揉碎了但不是往整晕里说。

     提到反射,第一印象就是条件反射,即有机体通过神经系统,对于刺激所发生的反应,比如有人在窗户前喊你大官人你会不自觉的往上看,说不定这一瞥还是个美娘子。但今天要说的反射不是这个身体的条件反射,而是java中的反射机制,java中什么叫反射?注意要敲概念了:反射机制就是在运行状态中任意一个类都能知道这个类的属性和方法,对于任意一个对象,都能调用它的任意一个方法.这种动态获取信息,以及动态调用对象方法的功能叫java语言的反射机制。这个概念很简单在百度输入搜出的结果都是这个,但一看满头雾水,这句话没有主语?什么东西在运行状态?什么叫运行状态?什么叫一个类都知道这个类的属性和方法?,发现就这一句话包含了很多需要你之前积累的知识(后悔没有每天好好学习导致基础不扎实了吧)。别慌,下面就开始慢慢掰开了揉碎了一个一个说:

  java作为一种编程语言,具有编译性和解释性,那啥叫编译和解释?工作中每个版本有修改提交经常会小伙伴说这个编译打包比较费时间,确实也挺费时间。百度百科给出的解释叫把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序翻译程序,说白了就是编译器把具有一定语法格式的语言转换为机器能看的懂的语言翻译官。机器只能看懂二进制语言,就是01011类似这种的语言,编译器就把用java语言写的文件.java翻译成字节码文件.class.编译完就要运行。注意这里出现了反射概念中的运行!不运行没有输出那实现不了最终用程序实现某一功能的目的,但一份.class文件跑在不同的操作系统上会出现兼容性问题,于是有了JVM这个帮助我们在不同平台运行解释一份.class文件的机器。

  说了一堆概念,再来根据这些概念转译一下反射机制概念的前半段:反射机制就是JVM能够知道任意一个类中的属性和方法。发现终于概念有主语了是JVM!技术性文档那也不是一般非专业的能够看懂的,能读懂到这里估计可以小高兴下(给自己鼓掌2分钟),高兴完了回到一个很大的概念什么是JVM?为什么我说它很大,因为你去书店或者网上输入JVM可以发现信息量大的可怕,专业性的书也很多,JVM包括类的加载和执行,其中类的执行又涉及到另一个知识点Class类,环环相扣,class类其实就是反射机制的核心,class对象通过类名获取类中的信息包括属性和方法。本着知其然知其所以然的精神:了解为什么class对象可以获取到类中的信息?原因在这里:类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。所以知道了吧,类加载用的就是反射机制。

   好了,都是概念的东西,先了解然后去码代码实践实践,理解就更快了。后面每天还会继续更新,觉得写的好给我点个赞或者关注我,觉得还可以提升的地方可以给我评论,学习的道路上互相作伴永不停止!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值