连咸鱼都能学会的Java反射

来源:互联网 发布:声波透射法数据分析 编辑:程序博客网 时间:2024/04/30 05:10

我们这期来简单讲讲Java反射的原理,优点和缺点

经过我看过大量的有关反射的博客、资料,


首先我简单的概括下Java反射原理

在程序运行过程中,对于任意一个类、对象,都能知道其属性和方法


优点

能大大的提高系统的灵活性、扩展性

因为存在这样的情况,我们在编程时,可能会引用到一个不在当前编译环境的类,这时候我们用反射,就能知道该类里的任何方法、成员变量,可以将其实例化为一个对象,然后调用其方法进行继续的编程


缺点

性能损耗:因为反射包含了一些动态类型,JVM无法对其进行优化,运用了反射的操作其效率要大大低于没有用反射的操作,所以要做好取舍,避免在频繁使用的程序中运用反射操作。

破坏封装性:因为反射能随意调用一些类里不被允许的操作(如调用私有方法),可能造成一些错误,增加了代码中的耦合性。

安全限制:反射必须基于安全的环境下调用


这里简单说下在代码中怎么实现反射:

首先定义一个类,如下图的SaveAndConfirmAction


然后编写一个用于测试反射的小程序:


结果:


我们可以看到getDeclaredMethods()返回的则是在类自身声明的所有方法,包括复写的方法。

当然,Java还有其他的API能获取该类的方法、成员变量等等,在这我就不一一展示了,可以参考我下面的链接,他们有详细的讲解这些API

http://blog.csdn.net/xiaohanluo/article/details/52034127

http://blog.csdn.net/u012721013/article/details/51833626

我想说的是,反射这个小火球魔法我们只要了解就行,他的进阶魔法爆裂火球--动态代理,才是我们要掌握的,这个我会在下期博客详讲

最后,祝各位麻瓜们早日进阶,掌握更多美轮美奂的魔法。


阅读全文
0 0