用java实现动态代理
时间: 2023-02-07 17:54:01 浏览: 59
Java实现动态代理
动态代理是指在运行时动态地创建代理类的机制。在 Java 中,动态代理可以使用 `java.lang.reflect.Proxy` 类实现。
要实现动态代理,你需要定义一个接口并创建该接口的实现类。然后你可以使用 `Proxy` 类的 `newProxyInstance` 方法来创建该接口的代理。这个方法需要三个参数:
1. 一个类加载器(ClassLoader),它负责加载代理类。
2. 一个接口数组,表示该代理类要实现的接口。
3. 一个 `InvocationHandler` 对象,表示当调用代理类的方法时要执行的操作。
下面是一个简单的示例,展示了如何使用动态代理来实现对方法调用的计时功能:
```java
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
// 定义一个接口
interface Hello {
void sayHello();
}
// 定义一个实现类
class HelloImpl implements Hello {
@Override
public void sayHello() {
System.out.println("Hello World!");
}
}
// 定义一个 InvocationHandler
class TimeHandler implements InvocationHandler {
private Object target;
public TimeHandler(Object target) {
super();
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
long start = System.currentTimeMillis();
System.out.println("Start Time: " + start);
method.invoke(target, args);
long end = System.currentTimeMillis();
System.out.println("End Time: " + end);
System.out.println("Spent Time: " + (end - start));
return null;
}
}
public class Main {
public static void main(String[] args) {
Hello hello = new HelloImpl();
阅读全文