java基础-反射技术(磨砺营马剑威java)
在Java运行时环境中,对于任意一个类,能否知道这个类的哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java语言的反射(Reflection)机制。 反射给java提供了,运行时获取一个类实例的可能,这一点非常灵活,你仅仅传一个类的全限定名,就能通过反射,来获取对应的类实例,我们一般会用Class类,来调用这个被反射的Objcet类下的:构造方法,属性,或方法等。 反射在一些开源框架里用的非常之多,Spring,Struts,Hibnerate,MyBatics都有它的影子,反射虽然很灵活,能够使得写的代码,变的大幅精简,所以在用的时候,一定要注意具体的应用场景。 反射的优缺点如下: 优点: A:能够运行时动态获取类的实例,大大提高系统的灵活性和扩展性。 B:与Java动态编译相结合,可以实现无比强大的功能 缺点: A:使用反射的性能较低 B:使用反射相对来说不安全 C:破坏了类的封装性,可以通过反射获取这个类的私有方法和属性 任何事物,都有两面性,反射的优点,也同是就是它的缺点,所以,没有好与坏,只有最合适的场景,一阴一阳,才是天道平衡的条件。 在反射API中我们重点关注一下几个类: Class -- 代表类 Field -- 代表属性(成员变量) Method -- 代表方法