Java创建一个接口,为这个接口创建一个动态代理类
时间: 2024-11-12 09:39:01 浏览: 15
Java的实现机制-Java动态接口代理技术
在Java中,你可以通过`java.lang.reflect.Proxy`类和`InvocationHandler`接口来创建动态代理。首先,你需要创建一个接口,例如:
```java
public interface MyInterface {
void doSomething();
}
```
然后,你可以定义一个实现了这个接口的`InvocationHandler`实例,用于处理实际的方法调用:
```java
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class MyInvocationHandler implements InvocationHandler {
private Object target; // 被代理的对象
public MyInvocationHandler(Object target) {
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("Before method call");
Object result = method.invoke(target, args);
System.out.println("After method call");
return result;
}
}
```
接下来,使用`Proxy.newProxyInstance()`方法创建动态代理类:
```java
MyInterface myInterface = (MyInterface) Proxy.newProxyInstance(
MyInterface.class.getClassLoader(),
new Class[]{MyInterface.class},
new MyInvocationHandler(new MyClass()) // 具体实现对象
);
```
在这个例子中,`MyClass`是你想要代理的实际类,并实现了`MyInterface`。当调用`myInterface.doSomething();`时,会先打印"Before method call",执行完`doSomething()`后,再打印"After method call"。
阅读全文