完整代码案例给出一个实现两个数相加使用JDK动态代理的例子。
时间: 2024-02-03 12:14:56 浏览: 22
好的,下面是一个使用JDK动态代理实现两个数相加的例子:
1. 创建一个接口,定义加法方法
```java
public interface Calculator {
public int add(int a, int b);
}
```
2. 创建一个实现接口的类
```java
public class CalculatorImpl implements Calculator {
@Override
public int add(int a, int b) {
return a + b;
}
}
```
3. 创建一个动态代理类
```java
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class CalculatorProxy implements InvocationHandler {
private Object target;
public CalculatorProxy(Object target) {
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("before add");
Object result = method.invoke(target, args);
System.out.println("after add");
return result;
}
public static void main(String[] args) {
CalculatorImpl calculatorImpl = new CalculatorImpl();
Calculator calculator = (Calculator) Proxy.newProxyInstance(calculatorImpl.getClass().getClassLoader(),
calculatorImpl.getClass().getInterfaces(), new CalculatorProxy(calculatorImpl));
System.out.println(calculator.add(1, 2));
}
}
```
4. 运行程序,输出结果
```java
before add
after add
3
```
这个例子中,我们使用动态代理技术,代理了实现加法的类CalculatorImpl,并在调用加法方法前后输出了一些信息。