http://tutorials.jenkov.com/java-reflection/index.html
http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html
http://www.infoq.com/cn/articles/cf-java-reflection-dynamic-proxy
http://www.blogjava.net/amigoxie/archive/2007/04/21/112421.html
反射其实就是程序能够自检查自身信息。就像程序会照镜子反光看自己。 在程序中可以检查某个类中的方法属性等信息,并且能够动态调用。 这样可以写出很灵活的程序。 比如要把一个对象中的数据copy到另外一个对象中,规则是属性名相同就copy, 就可以用反射来做,不需要指定每个属性的名字,只要动态从类中取得信息, 再判断属性名是否相同即可。当然应用还有很多。 反射可以结合Java的字节码,使用ASM和cglib等库,还能动态生成类。 hibernate的延迟载入,spring的AOP都是这么实现的 反射给Java带来了一些动态性。不过虽然很好,但毕竟还是有一定局限性的。另外ASM,cglib使用还是不放便。因此一些纯动态语言现在是一个重要发展趋势,比如ruby,python等,程序很容易动态生成。
No comments:
Post a Comment