请问JAVA的反射机制在工作中经常用到吗?

请问JAVA的反射机制在工作中经常用到吗? 老程序猿都说反射机制非常的重要,可是工作中也没用到啊,求大神解答!!!

阅读 12k
5 个回答

反射用的不多,大多数时候你用不上它。但:

  • 文件操作API也用的不多,但你有业务需求的时候没它不行;

  • 线程用的不多,但有时候没线程程序几乎跑不起来;

  • LinkedList也用的不多,但在某些情况下它的效率要比ArrayList要高几十倍;

  • TreeMap也用的不多,但有时候它能简化你的代码;

  • 接口(interface)也不是必须的,你可以不写interface完成几乎所有的功能;

  • 甚至,面向对象也不是必须的,你可以用过程式的代码完成别人用几十个类做的功能;

知识学到了是自己的,何必搞得好像是被迫学习一样,有这个提问的时间都学完了。

P.S. 补充一下:

对于J2EE来说,Hibernate之类的ORM全都基于动态字节码和反射技术,Spring等IoC框架也基于动态代理(有时是动态字节码)和反射技术,各类流行的MVC也是Servlet+反射的实现。

对于Android来说,其本身的Context.startActivity/sendBroadcast等都是基于反射,如Gson/Jackson等JSON-ORM都是基于反射,反射技术还能解决部分跨进程调用问题及系统hack。

大多数框架用到反射,如果你想研究学习框架,甚至写自己的框架,学反射可以说是必然的。

取决于你的程序场景 反射可以解决静态编译时不确定运行库是否有某个API的情况

比如android开发时,一个系统API是4.0以上SDK才有的,但是你的程序需要在2.3以上版本运行

那么如果你显式的直接调用这个API,那么就会编译不通过

这时使用反射机制就可以绕过静态语言的编译时检查,等到运行时才做检查.

可以认为是削弱系统耦合程度的一种方式


所有的功能都是针对某些场景存在的,你遇到了就有用,遇不到就没用

反射能把很多业务逻辑进行抽象,形成公用的方法。这也是为什么很多框架会用到反射的原因,可以学一些框架,看里面是如何用反射的。

新手上路,请多包涵

反射是学习框架的必备知识。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题