3 回答
TA贡献1827条经验 获得超4个赞
取决于你的程序场景 反射可以解决静态编译时不确定运行库是否有某个API的情况
比如android开发时,一个系统API是4.0以上SDK才有的,但是你的程序需要在2.3以上版本运行
那么如果你显式的直接调用这个API,那么就会编译不通过
这时使用反射机制就可以绕过静态语言的编译时检查,等到运行时才做检查.
可以认为是削弱系统耦合程度的一种方式
所有的功能都是针对某些场景存在的,你遇到了就有用,遇不到就没用
TA贡献1828条经验 获得超3个赞
反射用的不多,大多数时候你用不上它。但:
文件操作API也用的不多,但你有业务需求的时候没它不行;
线程用的不多,但有时候没线程程序几乎跑不起来;
LinkedList也用的不多,但在某些情况下它的效率要比ArrayList要高几十倍;
TreeMap也用的不多,但有时候它能简化你的代码;
接口(interface)也不是必须的,你可以不写interface完成几乎所有的功能;
甚至,面向对象也不是必须的,你可以用过程式的代码完成别人用几十个类做的功能;
知识学到了是自己的,何必搞得好像是被迫学习一样,有这个提问的时间都学完了。
P.S. 补充一下:
对于J2EE来说,Hibernate之类的ORM全都基于动态字节码和反射技术,Spring等IoC框架也基于动态代理(有时是动态字节码)和反射技术,各类流行的MVC也是Servlet+反射的实现。
对于Android来说,其本身的Context.startActivity/sendBroadcast等都是基于反射,如Gson/Jackson等JSON-ORM都是基于反射,反射技术还能解决部分跨进程调用问题及系统hack。
添加回答
举报