码迷,mamicode.com
首页 > 编程语言 > 详细

java的反射机制的好处

时间:2018-02-05 14:23:21      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:mys   cti   问题   老顽童   接口   找到你   一个   语句   虚拟机   

java中反射是在运行中动态的加载进入。有个很大的好处就是可以节省很多资源。为什么这么说呢,首先我们来说一下jvm,jvm是java的虚拟机,java之所以支持跨平台就是因为java虚拟机的存在。程序你有如下语句 Object o=new Object();运行起来的时候,java的虚拟机会首先启动。将你的java文件编译成 .class文件。加载进入你jvm的内存之中。你的类Object会加载进入方法区,这时候会生成个类的类型对象(即class类的对象)加载到堆中,作为方法区类的数据结构的接口。jvm创建对象时会看你的类是否加载好,加载好了便生成你的类的对象。然而在大型工程项目中,有很多可能暂时用不到,所以我们没必要把每一个类都生成对象。而反射机制正是解决这了这个问题。

举个例子我们的项目底层有时是用mysql,有时用oracle,需要动态地根据实际情况加载驱动类,这个时候反射就有用了,假设 com.java.dbtest.myqlConnection,com.java.dbtest.oracleConnection这两个类我们要用,这时候我们的程序就写得比较动态化,通过Class tc =Class.forName("com.java.dbtest.TestConnection");通过类的全类名让jvm在服务器中找到并加载这个类,而如果是oracle则传入的参数就变成另一个了。这时候就可以看到反射的好处了,这个动态性就体现出java的特性了!举多个例子,大家如果接触过spring,会发现当你配置各种各样的bean时,是以配置文件的形式配置的,你需要用到哪些bean就配哪些,spring容器就会根据你的需求去动态加载,你的程序就能健壮地运行。


反射通过对象获取到类,Employee employee=new Employee(); employee.getClass();getClass是Object类中的方法。

注意Class文件就是反射机制的源头。只要找到你用的类的Class类型对象。就能找到你类的方法。就可以调用这个类的方法。

获取Class类的对象的方法有如下三种。


如下图


借鉴如下大佬的文章。
作者:老顽童周伯通
链接:https://www.zhihu.com/question/24304289/answer/147529485
来源:知乎


java的反射机制的好处

标签:mys   cti   问题   老顽童   接口   找到你   一个   语句   虚拟机   

原文地址:http://blog.51cto.com/ji123/2068928

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!