怎么实现 JDK 动态代理?
JDK 动态代理最核心的一个接口和方法如下所示:
1. java.lang.reflect 包中的 InvocationHandler 接口:
对于被代理的类的操作都会由该接口中的 invoke 方法实现,其中的参数的含义分别是:
- proxy:被代理的类的实例;
- method:调用被代理的类的方法;
- args:该方法需要的参数。
使用方法首先是需要实现该接口,并且我们可以在 invoke 方法中调用被代理类的方法并获得返回值,自然也可以在调用该方法的前后去做一些额外的事情,从而实现动态代理。
2. java.lang.reflect 包中的 Proxy 类中的 newProxyInstance 方法:
其中的参数含义如下:
- loader:被代理的类的类加载器;
-
interfaces:被代理类的接口数组;
-
invocationHandler:调用处理器类的对象实例
该方法会返回一个被修改过的类的实例,从而可以自由的调用该实例的方法