个人理解反射机制就是可以通过字符串动态编译类、调用方法。但是,调用类时必须知道类名,调用方法时方法的签名必须提前形成约定,不然你都不知道类和方法长什么样如何创建和调用?另一方面,你如果知道了方法签名又怎么能称作动态编译,因为你在编译前就已经知道了要调用哪个类的哪个方法、方法签名,我认为这只是一层对于类创建、方法调用的抽象,让你不用硬编码,根据配置实时地去创建类或者方法调用,和工厂方法的 switch-case 没什么差别。。多态也是去除硬编码,提高灵活性(后面有新理解再作修改:P)
java 中的 Serializable 接口,通过反射机制找到子类中有没有实现 readObject 和 writeObject 方法,如果没有找到的话则不调用,找到的话则调用,在不存在反射机制的语言中,readObject 和 writeObject 两个方法则需要通过多态的方法实现
相关链接:
- http://www.cnblogs.com/jqyp/archive/2012/03/29/2423112.html
- https://docs.oracle.com/javase/tutorial/reflect/
- http://www.cnblogs.com/jack204/archive/2012/10/29/2745150.html
为什么 C++ 不用反射:https://ask.helplib.com/97091
网友评论