page contents

怎么实现 JDK 动态代理?

轩辕小不懂 发布于 2022-02-11 14:36
阅读 507
收藏 0
分类:Java开发
3041
Nen
Nen
- 程序员

JDK 动态代理最核心的一个接口和方法如下所示:

1. java.lang.reflect 包中的 InvocationHandler 接口:

“`java

public interface InvocationHandler {

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable;

}

“`

对于被代理的类的操作都会由该接口中的 invoke 方法实现,其中的参数的含义分别是:

1. proxy:被代理的类的实例;

2. method:调用被代理的类的方法;

3. args:该方法需要的参数。

使用方法首先是需要实现该接口,并且我们可以在 invoke 方法中调用被代理类的方法并获得返回值,自然也可以在调用该方法的前后去做一些额

外的事情,从而实现动态代理。

2. java.lang.reflect 包中的 Proxy 类中的 newProxyInstance 方法:

“`java

public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) throws IllegalArgumentException

“`

其中的参数含义如下:

1. loader:被代理的类的类加载器;

2. interfaces:被代理类的接口数组;

3. invocationHandler:调用处理器类的对象实例

该方法会返回一个被修改过的类的实例,从而可以自由的调用该实例的方法

请先 登录 后评论