风中叶说反射是好多框架的基础实现。
请大虾们说说看:
反射在运行时到底有什么优势啊?或者说作用啊
我不懂啊。
当然我知道它可以修改和运行PRIVATE修饰的东西,这挺好玩的
还有其它作用不?谢谢大家了

解决方案 »

  1.   

    反射的功能很强大,不知道用过 @ 形式的 Annotation 么?处理 Annotation 全部是靠反射来进行的。比如说在 JPA 中使用 @Entity 标注一个实体类,JPA 的 EntityManager 为啥知道这是持久化的实体
    类呢?因为在运行时可以反射查到这个类被 Entity 这个 Annotation 标记过。反射带来的是应用程序的管理很容易简单了,但是反射有个极大的缺点就是反射速度慢。根据研究表明:
    采用反射产生对象要比直接 new 产生对象慢数百倍。反射一般是框架/容器的行为,普通的开发人员很少会用到反射。
      

  2.   

    呵呵,有兴趣深入的话还可以看看 asm, cglib, javassist 等等动态代码生成工具,就可以对 Java 的 Reflection 机制有很好的理解了 :-)
      

  3.   

    你看看hibernate的save(Object object)方法,你传一个参数比如一个user对象,那么hibernate怎么知道你传过来的对象是user而不是costomer?所以这里用到了反射。反射就是说在运行时可以获取需对象的所有方法和属性。