怎么理解Java中的反射,作用是什么
5个回答
展开全部
反射是审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等.
反射的主要作用是用来扩展系统和动态调用程序集。
所谓扩展系统就是先把系统写好,系统里面定义接口,后面开发的人去写接口的代码。
此时该系统就要用反射了,系统用反射调用接口,当接口没写,系统利用反射就不会不会出错,此时就等于没实现此功能而已,当接口被人写好了,系统就会自动调用接口的功能展现在系统上。
即反射实现即插即用功能。
动态调用程序集就是利用反射去调用编译好的dll,当然此时的dll没有被引用到你所建的工程里面。
当你编译你的工程时,不会编译你调用的dll,当你运行到调用dll时,此时才会去调用dll,判断是否有语法语义,等编译,运行的错误。
这样利用反射具有一定灵活性,就是不用从你的工程调用dll,还有就是dll可随时改变(当然接口还是要对应),不需改变你所建的工程。
总之反射最好的好处就是新建工程时后不须一定要写好dll,可新建完工程后,后期写dll也可以。即所谓后期绑定。当然利用反射是耗资源的,损失效率,如果不是在上面的场合利用此技术,可能不会带来好处,反而是坏处。
反射的主要作用是用来扩展系统和动态调用程序集。
所谓扩展系统就是先把系统写好,系统里面定义接口,后面开发的人去写接口的代码。
此时该系统就要用反射了,系统用反射调用接口,当接口没写,系统利用反射就不会不会出错,此时就等于没实现此功能而已,当接口被人写好了,系统就会自动调用接口的功能展现在系统上。
即反射实现即插即用功能。
动态调用程序集就是利用反射去调用编译好的dll,当然此时的dll没有被引用到你所建的工程里面。
当你编译你的工程时,不会编译你调用的dll,当你运行到调用dll时,此时才会去调用dll,判断是否有语法语义,等编译,运行的错误。
这样利用反射具有一定灵活性,就是不用从你的工程调用dll,还有就是dll可随时改变(当然接口还是要对应),不需改变你所建的工程。
总之反射最好的好处就是新建工程时后不须一定要写好dll,可新建完工程后,后期写dll也可以。即所谓后期绑定。当然利用反射是耗资源的,损失效率,如果不是在上面的场合利用此技术,可能不会带来好处,反而是坏处。
展开全部
通俗易懂的就是,通过这个类生成的对象,找到这个类的属性和方法,即对象.属性或者对象.方法,属性和方法就类里面的——这是我自己的理解,作用就是楼上他们说的那些,又长又多的话了,我记反射就是这么记得了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-29
展开全部
最大也是最主要作用就是 可以通过配置文件来动态配置和加载类,以实现软件工程里所提及的类与类,模块与模块之间的解耦。反射最经典的应用在spring框架里。
反射简单的说,就是动态加载对象,并对对象进行剖析。举个例子,比如你写了一个类A,然后java用反射就可以实现 createclass("A")(这个方法是我杜撰)我就能生成一个类A的对象,然后createclass("B")我就能成一个B对象,然后我用反射里的机制可以找到这个对象里面的全部信息,例如构造函数 成员 里面的所有函数我都可以调用。
反射简单的说,就是动态加载对象,并对对象进行剖析。举个例子,比如你写了一个类A,然后java用反射就可以实现 createclass("A")(这个方法是我杜撰)我就能生成一个类A的对象,然后createclass("B")我就能成一个B对象,然后我用反射里的机制可以找到这个对象里面的全部信息,例如构造函数 成员 里面的所有函数我都可以调用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没啥用
总也不用
总也不用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询