连咸鱼都能学会的Java反射

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

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


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

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


优点

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

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


缺点

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

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

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


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

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


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


结果:


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

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

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

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

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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值