反射与动态代理与AOP

反射是什么?

Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。
ps:我的理解,反射就是通过某种手段,获取一个类的信息。例如成员变量和方法,可以调用一个对象的属性和方法。这个类只有在运行的时候才知道是哪个类,解耦。
pps:在类的加载过程中,有三大步,五小步,三大步是加载,连接,初始化。连接包含三小步,分别是验证,准备和解析。在加载阶段的主要功能是,1.找到对应的class文件,2将其导入到方法区,3,在堆中生成一个Class对象作为方法区的入口。反射就是利用一个类对应的Class对象,来做上述事情的。

反射实战

首先根据一个类的全限定类名可以获取到这个类的Class对象。

Class clz = Class.forName("com.company.Apple");

然后可以获取到这个类的属性和方法。
获取到它的构造方法,普通方法:

Method method = clz.getMethod("setPrice", int.class);
Constructor constructors = clz.getConstructor();

如果要执行这个方法,可以使用invoke方法。

Object o = constructors.newInstance();
method.invoke(o,4);

也就是,正常对类所做的操作,都可以使用反射来实现。

反射有什么用?

最重要的方式当然是做动态代理。
下一篇文章说一下动态代理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值