A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© caiyaoren 中级黑马   /  2014-7-10 22:08  /  2230 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求大牛帮忙说说反射的用法。。我刚才做了题  离开了老师的视频 一点不会了   妈蛋!!!郁闷中

13 个回复

倒序浏览
越看越糊涂  难道说今天不适合看反射?
回复 使用道具 举报
同上,感觉张老师的视频没怎么看懂
回复 使用道具 举报
其实我觉得最主要是不懂,反射与new的区别吧,既然已经可以new了,为什么还要用到反射呢?反射来调用一个类的方法明显要比new对象调用方法复杂的多
说一下new和反射的区别希望对你有所帮助
基本上效果差不多,但是new对象,无法调用该类里面私有的东西,反射反之,不过反射需要以牺牲性能做代价
new属于静态编译,而反射属于动态编译,意思就说只有到运行时他才会去获得该对象的实例(这么说可能不太准确,你能理解就行)
比如:
spring框架是事先就写好的框架,他内部的处理并不知道用户要写哪些类,因为那是以后由用他的人来定的,这时候你还能在spring内部去new吗?所以用户在用的时候才去配置文件中配置类路径,这是一个典型反射的例子(这个视屏中也有相对应的代码就不写了)

new与反射的区别其实就是静态编译和动态编译的区别:
静态编译就是在编译的时候把你所有的模块都编译进exe里去,当你启动这个exe的时候所有模块都加载进来了。你写小程序没问题,但程序一大,加载的过程(就是当你运行程序时初始化的过程)就比较费力了......

动态编译就不一样了,你编译的时候那些模块都没有编译进去,一般情况下你可以把那些模块都编译成dll,这样你启动程序(初始化)的时候这些模块不会被加载,而是在运行的时候,用到那个模块就调用哪个模块。

简单的打个比方,我写个阅读器,支持txt,pdf,udm三种格式,暂时把读txt,读pdf,读udm定义为三个功能模块。 使用静态编译:我想看个txt,点击应用程序图标以后三个功能都加载进来了,判断格式,使用读txt模块。(在这里,另外两个模块的作用就是占用系统资源) 使用动态编译:我想看个txt,点击应用程序,判断格式,只加载读txt模块,使用读txt模块。

显然,动态编译1速度快,2节省了系统资源,3利于今后拓展。但是却降低了性能

希望对你有帮助
回复 使用道具 举报
学习了,谢谢
回复 使用道具 举报
燿陚√揚葳 发表于 2014-7-11 18:02
其实我觉得最主要是不懂,反射与new的区别吧,既然已经可以new了,为什么还要用到反射呢?反射来调用一个类 ...

恩  不管怎么说 谢谢你了
回复 使用道具 举报
建议结合视频和书籍看。。多做几个例子!!
回复 使用道具 举报
huangqili 发表于 2014-7-11 20:48
建议结合视频和书籍看。。多做几个例子!!

照着视频 会做   自己做就蒙了
回复 使用道具 举报
反射着确实很不好理解,不过这是学习三大框架的基础知识啊,必须掌握,推荐你一本书——《JavaWeb王者归来》
回复 使用道具 举报
caiyaoren 发表于 2014-7-11 20:41
恩  不管怎么说 谢谢你了

不客气的,这些网上都有说过,对照着代码多看几遍一定可以的
回复 使用道具 举报
框架啊框架 迟早要学 早点啃下来吧 加油
回复 使用道具 举报
caiyaoren 发表于 2014-7-11 20:50
照着视频 会做   自己做就蒙了

没事,一开始模仿,后来自己思考,一定要理解当中的道理~
回复 使用道具 举报
燿陚√揚葳 发表于 2014-7-11 21:16
不客气的,这些网上都有说过,对照着代码多看几遍一定可以的

恩 我有时间再看看吧  今天又学习了File类
回复 使用道具 举报
我在基础班,老师说反射就业班会讲的,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马